Forum: Mikrocontroller und Digitale Elektronik zwei Arrays vergleichen


von sophia (Gast)


Lesenswert?

hallöchen,
ist es irgendwie möglich, den Inhalt eines Arrays zu vergleichen?
Dabei ist ein Array vorgegeben

unsigned int Array1[5] = {1,2,3,4,5};
unsigned int Array2[5] = {0,0,0,0,0};

folgend wird Array 2 mit den werten beschrieben. Dabei ist die 
Reihenfolge jedoch unterschiedlich. Auch muss Array2 nicht unbedingt 5 
mal beschreiben werden. zum Schluss könnte Array2 wie folgt aussehen
Array2{2,5,3,4,1};
oder auch
Array2{2,5,3,0,0};

Jetzt möchte ich Array2 mit Array1 vergleichen. Aber wie gesagt, nur den 
Inhalt. Alsow beim ersten beispiel wäre der Array gleich. beim zweiten 
jedoch nciht.

bisher habe ich so etwas immer in einer forschleife gemacht, also
for(i=0,i<=5,i++){
  if(Arraay1[i]==Array2[i]){
    ...
  }
}
Das kann ich ja aber hier nicht machen, da die Reihenfolge ja verkehrt 
sein darf.

gibt es da noch andere Alternativen?

Sophia

das kann ich ja aber hier nicht anwenden

von Tom (Gast)


Lesenswert?

Zuerst z.B. mit quicksort sortieren und dann mit memcmp vergleichen.

von Grmpf... (Gast)


Lesenswert?

sophia schrieb:
> ist es irgendwie möglich, den Inhalt eines Arrays zu vergleichen?

Nein. Verabschiede dich von dieser abstrusen Idee. Da sind die besten 
Programmierer bereits dran gescheitert. Leider...

Ironie aus

sophia schrieb:
> bisher habe ich so etwas immer in einer forschleife gemacht, also
> for(i=0,i<=5,i++){
>   if(Arraay1[i]==Array2[i]){
>     ...
>   }
> }
> Das kann ich ja aber hier nicht machen, da die Reihenfolge ja verkehrt
> sein darf.

Wenn man auch nur EINE Sekunde überlegt, kommt man auf die Idee, dass 
man eine zweite Zählvariable mit Schleife nimmt (auch als Anfänger):

for(i=0;i<=5;i++){
  for (j=0; j<=5; j++) {
      if(Array1[i]==Array2[j]){
      // Funktion
      }
  }
}

Fertig...

Richt irgendiwe nach Troll (auch durch die Schreibfehler im Code)

von c-hater (Gast)


Lesenswert?

Grmpf... schrieb:

> Richt irgendiwe nach Troll

Natürlich, die Anzeichen sind eindeutig:

Fake-Weibchen
Idiotische Einlassung

Ganz klar ein Troll. Oder ein echter weiblicher Vollidiot (sehr, sehr 
unwahrscheinlich).

Das wirklich Interessante ist: sachlich würde das durchaus einen 
Riesenunterschied bedeuten, es macht aber für die korrekte Behandlung 
des Postings eigenartigerweise keinerlei Unterschied....

Lesen, kichern, vergessen...

von Carsten R. (kaffeetante)


Lesenswert?

Zwei beispielhafte Möglichkeiten:

1. kopieren, sortieren, vergleichen

2. Ein weiteres Array3 gleicher Länge zum Markieren anlegen.

Durchsuche Array2 Symbol für Symbol nach den Elementen aus Array1.
Wird ein Symbol in Array2 an Position x gefunden, so prüfe ob Position x 
in Array3 markiert ist.
Wenn nicht markiert, so markiere Position x in Array3 und suche nach dem 
nächsten Symbol.
Wenn markiert, suche weiter.
Wird ein Symbol nicht gefunden, so sind die Arrays im Sinne der 
Definition verschieden.
Waren alle Suchen erfolgreich, so sind die Arrays im Sinne der 
Definition gleich.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Carsten R. schrieb:
> 2. Ein weiteres Array3 gleicher Länge zum Markieren anlegen.

 Geht am schnellsten und einfachsten. Wer sich jemals mit 6 aus 49
 versucht hat, weisst das.

von Hugo (Gast)


Lesenswert?

Ich glaube da fehlt es an Hirnschmalz. Allein die Problemstellung 
scheint das Resultat eines Denkfehlers zu sein.... Lösbar ist es, wie 
oben von Grmpf...  ansatzweise beschrieben wurde.

von Carsten R. (kaffeetante)


Lesenswert?

Hugo schrieb:
> Lösbar ist es, wie
> oben von Grmpf...  ansatzweise beschrieben wurde.

ansatzweise... Denn wenn Elemente in Array1 mehrfach vorkommen dürfen, 
muß das Programm nachgebessert werden, z.B. mit einem Markierungsarray.

von Tom (Gast)


Lesenswert?

Wie sieht die Anforderung genau aus? Jeder Wert aus array1 muss auch in 
array2 vorkommen und umgekehrt? Oder "muss genausooft ... vorkommen"?

Wären {1,2,3,4,1} und {4,3,2,1,4} für Dich gleich?

von Tom (Gast)


Lesenswert?

Ein schönes Beispiel für "Wenn es trivial aussieht, hat man das Problem 
wahrscheinlich nicht vollständig verstanden".

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.