Damit prüfst du aber nur, ob zwei aufeinanderfolgende (+1) Werte gleich sind.
Deine While-Schleife entspricht ja dieser For-Schleife:
(vergleiche jeden Wert mit seinem Nachfolger)
Delphi-Quellcode:
for i := 0 to High(arr) - 1 do
if arr[i] = arr[i + 1] then Gleich;
> Bei einem sortieren Array wäre das aber dennoch vollkommen ausreichend.
So könnte man z.B. prüfen, ob Werte irgendwo mehrfach vorkommen.
(vergleiche jeden Wert mit allen anderen Werten)
Delphi-Quellcode:
for i := 0 to High(arr) do
for i2 := 0 to High(arr) do
if (i <> i2) and (arr[i] = arr[i2]) then Gleich;
oder schneller, da man bereits geprüfte Wertpaare leicht überspringen kann.
Delphi-Quellcode:
for i := 0 to High(arr) - 1 do
for i2 := i + 1 to High(arr) do
if arr[i] = arr[i2] then Gleich;
das ganze auf zweidimensional umgestellt
Delphi-Quellcode:
for x := 0 to High(arr) do
for y := 0 to High(arr[x]) do
for x2 := 0 to High(arr) do
for y2 := 0 to High(arr[x2]) do
if ((x <> x2) or (y <> y2)) and (arr[x, y] = arr[x2, y2]) then Gleich;
Wie man jetzt z.B. x und y eines zweidimensionalen Arrays zusammenrechnet und wieder zerlegt, hab ich ja vorhin schonmal genannt.
Somit kann man die "eindimensionalen" Schleifen verwenden und zerligt sich dann den Schleifenzähler wieder in zwei Schleifenwerte.