Int werte vergleichen und Anzahl Paare ausgeben

rgamer

Mitglied
Guten Tag,

Ich habe eine Frage.
Ich habe 6 verschiedene int Variablen, die jeweils einen eingegebenen Wert bekommen. Dazu habe ich 6 verschiedene int Variablen zufällig erzeugt. Ich möchte nun die 6 mit den anderen 6 vergleichen, jede Zahl mit jeder und mir am Ende die Anzahl der übereinstimmenden Werte ausgeben lassen.

Also ein Beispiel:
a=5, b=10, c=15, d=20, e=25, f=30

zza=34, zzb=23, zzc=17, zzd=49, zze=30, zzf=15

Vergleich: f=zze und c=zzf

Ausgabe: 2 Wertepaare.


Wie geht das vor allem kurz?
 
Du kannst z.B. die ersten 6 in eine Hashstruktur einfügen.

Dann durchläufst du die zweiten sechs und schaust für jeden Wert nach, ob er schon in deiner Hashstruktur vorhanden ist.

Bei so wenigen Zahlen ist es aber auch überhaupt kein Problem. Einfach "alles mit allem" zu vergleichen. Sprich du legst ein Array oder eine List für beide Datensätzen und durchläufst alles mit zwei geschachtelten Schleifen. Bei 6 Zahlen für den ersten und 6 Zahlen für den zweiten Datensatz hast du dann auch 'nur' 36 Vergleiche ...
 
Genau. Da wäre BruteForce die einfachste Möglichkeit uns würde gleichzeitig nicht allzuviel Performance kosten.

Werden es allerdings mehr, so steigt der Performanceverlust stark an, da du mit einer Laufzeit von O(n^2) (Ist das richtig?) arbeiten würdest.
Dann solltest du die Zahlen zumindest vorher sortieren.
 
Ich habe es folgendermaßen jetzt selbst gelöst. War zwar relativ viel Schreibarbeit, aber dafür ist es meine eigene Lösung geworden.

Habe alle eingegebenen Zahlen in ein Array gespeichert und alle gezogenen Zahlen. Dann mit zwei for Schleifen diese beiden miteinander verglichen und jedesmal wenn er ein Wertepaar findet, dann wird die Variable Wertepaar um +1 hochgezählt.

Java:
int wertepaar = 0;
    
    int eingabeZahlen [] = new int [6];
    eingabeZahlen[0] = lzahl1;
    eingabeZahlen[1] = lzahl2;
    eingabeZahlen[2] = lzahl3;
    eingabeZahlen[3] = lzahl4;
    eingabeZahlen[4] = lzahl5;
    eingabeZahlen[5] = lzahl6;
    
    int zufallszahlen [] = new int [6];
    zufallszahlen[0] = zZahl1;
    zufallszahlen[1] = zZahl2;
    zufallszahlen[2] = zZahl3;
    zufallszahlen[3] = zZahl4;
    zufallszahlen[4] = zZahl5;
    zufallszahlen[5] = zZahl6;
    
    
    for (int i=0;i<zufallszahlen.length ;i++ ) 
    { 
      for (int j=1;j<eingabeZahlen.length;j++ ) 
      {
        if (eingabeZahlen[j-1]==zufallszahlen[i]) 
        {
          wertepaar +=1;
        } // end of if              
      } // end of for
    } // end of for
 
Da stilmmt was mit den Indizes nicht. Schau noch mal genau hin, du vergleichst nicht alle Zahlen, die du tatsächlich vergleichen willst. Bau dir in die innere for-Schleife ein geeignetes System.out ein, dann siehst du sicher sofort, was ich meine 🙂
 

Zurück
Oben