Einzelnen Beitrag anzeigen

Benutzerbild von zecke
zecke

Registriert seit: 17. Jan 2004
494 Beiträge
 
Turbo Delphi für Win32
 
#1

Arrays auswerten mit for-schleife

  Alt 2. Mär 2007, 22:01


Also der Titel war nicht einfach zu wählen, hoffe er ist passend.

Ich habe eine Schleife, die mir ausspuckt ob zwei Integer-Werte (die gleichen) innerhalb eines Arrays vorhanden sind:
Delphi-Quellcode:
for a := 1 to 5 do
  begin
    if (AvBlatt[a] <> nil) then
      begin
        if ((AvBlatt[a].X)=(AvBlatt[(AvBlatt[a].X)].Y)) then
          begin
            Showmessage('Karte '+IntToStr(AvBlatt[(AvBlatt[a].X)].X)+' und Karte '+IntToStr(AvBlatt[a].X));
            Break;
          end;
      end;
    if (AvBlatt[a] = nil) then
      begin
        //
      end;
end;
Zugewiesen habe ich tesweise wie folgt:
Delphi-Quellcode:
ABlatt[1]:=TKarte.Create((random(13)+1),kfKaro,1);
ABlatt[2]:=TKarte.Create((random(13)+1),kfPik,2);
ABlatt[3]:=TKarte.Create((random(13)+1),kfKreuz,3);
ABlatt[4]:=TKarte.Create((random(13)+1),kfKaro,4);
ABlatt[5]:=TKarte.Create((random(13)+1),kfHerz,5);
Ich habe also ein Array (ABlatt) mit gleichen/verschiedenen Zahlenwerten. Welche dieser Werte gleich sind oder nicht schreibe ich ein weiteres Array (AvBlatt). Dieses Array (AvBlatt) hat dann zwei integer-Einträge z.B. "X=1,Y=2".

AvBlatt[1].X:=1 und AvBlatt[1].Y:=3 würde also bedeuten: ABlatt[1].X = ABlatt[3].X

Mit der obigen Schleife gehe ich also die Werte durch und .gehe bei der 1. Übereinstimmung raus. Das funktioniert wunderbar für den fall, dass nur ein mal 2/3/4 zahlen gleich sind. Wenn ich 2 mal 2 gleiche habe bekomme ich nur das 1. paar zurück, weil ich aus der Schleife herausgehe, bevor sie beim späteren Päärchen angekommen ist.

Es ist etwas kompliziert, aber ich hoffe mir kann jemand helfen

Ich möchte natürlich alle doppelten Zahlen aus dem Array (AvBlatt), allerdings ohne dass ich eine Ausgabe wie "Karte 1 und Karte 3" und "Karte 3 und Karte 1" bekomme. Das hatte ich schon und hilft mir nicht weiter. Ich baute das break; ein, damit ich nur noch "Karte 1 und Karte 3" bekomme. Dadurch entstand aber das Problem, das nachfolgende Pärchen ignoriert werden.

mfg zecke
  Mit Zitat antworten Zitat