AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Arrays auswerten mit for-schleife

Ein Thema von zecke · begonnen am 2. Mär 2007 · letzter Beitrag vom 2. Mär 2007
Antwort Antwort
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, 21: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
Benutzerbild von zecke
zecke

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

Re: Arrays auswerten mit for-schleife

  Alt 2. Mär 2007, 23:42
Ha! Eigenlob stinkt, aber ich kann ganz genial sein

Ich habs hinbekommen und kann mir den kompletten 2. Array gleich noch sparen

Der Code:
Delphi-Quellcode:
for a := 1 to 5 do begin
   for b := 1 to 5 do
     begin
      if (ABlatt[a].Wert = ABlatt[b].Wert) then
       begin
         if (ABlatt[a].Position <> ABlatt[b].Position) then
           begin
             Showmessage('Karte '+IntToStr(ABlatt[b].Position)+' und Karte '+IntToStr(ABlatt[a].Position));
           end else
         break;
       end;
     end;
end;
Der Code überprüft jetzt, ob doppelte Zahlen vorhanden sind, egal an welcher Stelle. Muss nur noch der Fall von drei/vier gleichen Zahlen eingebaut werden

Danke an die, die sich immerhin die Mühe gemacht haben, mein Problem zu verstehen
mfg zecke
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz