Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Arrays auf doppelte Einträge prüfen


HenryHux - Di 12.10.10 21:03
Titel: Arrays auf doppelte Einträge prüfen
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 - 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):

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


HenryHux - Di 12.10.10 22:04

Danke, klappt perfekt =)