Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Array 3x3 prüfen ob Zahl doppelt

  Alt 12. Okt 2011, 09: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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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