Autor Beitrag
HenryHux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Di 12.10.10 21:03 
Hi,
ich will ein Integer-Array auf doppelte Einträge prüfen.
Es sind 5-10 Einträge pro Array und ich wüsste halt nur die einzelnen Einträge mit if and zu überprüfen.
Bei 2 oder 3 Einträgen kann man das ja noch machen. Aber bei 5 oder mehr wirds unangenehm.
Also meine Frage, wie kann ich herausfinden ob es doppelte Einträge gibt? (Die Einträge werden vorher aufsteigend mit BubbleSort sortiert).
Würde reichen, wenn mir die Funktion/Prozedur einen Bool wert zurückgibt.
Über jeden Tipp freue ich mich =)

Lg

Henry
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Di 12.10.10 21:32 
Da die Werte sortiert sind, brauchst Du in einer Schleife doch nur jeweils zwei nebeneinander liegende Werte auf Gleichheit zu prüfen. Ich würde dazu eine while-Schleife nehmen und zwei Abbruchbedingungen setzen:
1. Abbrechen, wenn zwei gleiche Werte gefunden wurden. Oder:
2. Der vorletzte mit dem letzten Integerwert wurde verglichen (Array komplett durchgeprüft).

Beispiel (nicht ausgetestet):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
  IntArray : array [1..10of integer;
  Index    : integer;
...
  Index := 1;
  Result := false;
  while (Index < 10and (not Result) do
    begin
      if IntArray[Index] = IntArray[Index + 1then
        Result := true;
      Inc(Index);
    end;

Edit1: Beispiel hinzugefügt

Für diesen Beitrag haben gedankt: HenryHux
HenryHux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Di 12.10.10 22:04 
Danke, klappt perfekt =)