Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: Array 3x3 prüfen ob Zahl doppelt

  Alt 12. Okt 2011, 10:45
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.
$2B or not $2B

Geändert von himitsu (12. Okt 2011 um 10:49 Uhr)
  Mit Zitat antworten Zitat