![]() |
Prüfen ob Integer in Array?
hallo zusammen,
ich hoffe mal das ist die richtige sparte... also ich habe ein array:
Delphi-Quellcode:
nun möchte ich prüfen, ob in diesem array jede zahl von 1 bis 9 GENAU 1 MAL vorkommt.
var a: Array[0..8] of Integer;
ich wollte das so prüfen:
Delphi-Quellcode:
leider geht das ja nicht mit arrays.
if 1 in a then // blabla
if 2 in a then // blabla if 3 in a then // blabla //... wie kann ich prüfen ob z.B. die Zahl 1 in dem array ist? gruss urbanbruhin |
Re: Prüfen ob Integer in Array?
Da musst du wohl oder übel eine FOR-Schleife bemühen.
|
Re: Prüfen ob Integer in Array?
Hallo,
falls das zu prüfende Array immer genau 9 Elemente besitzt, hilft Dir vielleicht folgender Code:
Delphi-Quellcode:
Falls das Array mehr als 9 Elemente enthält, kann mit dem Code nur noch das Vorhandensein, nicht aber die Eindeutigkeit einer Zahl überprüft werden:
var i : Integer;
s : set of 1..9; begin // Menge der enthaltenen Zahlen zusammenstellen s := []; for i := 0 to 8 do if (a[i] in [1..9]) then Include (s, a[i]); // Ergebnis prüfen if (s = [1..9]) then ShowMessage ("Jede Zahl genau 1x enthalten"); end;
Delphi-Quellcode:
Gruß Hawkeye
if (4 in s) then...
|
Re: Prüfen ob Integer in Array?
Hai ihr,
hier mal mein Ansatz für diesen Fall ;-)
Delphi-Quellcode:
Eigentlich mache ich nichts anderes als das Bit an der Postition welche von TestArray[ndx] bestimmt ist zu negieren.
procedure TDemoForm.Button1Click(Sender: TObject);
var TestArray: array[0..8] of Integer; TestInteger: Integer; ndx: Integer; begin // Ersteinmal für den Test das Array mit den Zahlen 1 bis 9 füllen for ndx := Low(TestArray) to High(TestArray) do begin TestArray[ndx] := ndx + 1; end; // Jetzt der Test. TestInteger := 0; // Alle Bits auf 0 for ndx := Low(TestArray) to High(TestArray) do begin TestInteger := (TestInteger xor (1 shl (TestArray[ndx] - 1))); end; if (TestInteger = $1FF) then // Das ist 2^9 -1 begin ShowMessage('blubb'); end; end; Ist aber nicht die schönste aller möglichen Lösungen ;-) |
Re: Prüfen ob Integer in Array?
die wohl simpelste lösung ist das ganze zu addieren :P
|
Re: Prüfen ob Integer in Array?
Zitat:
Frage 1: Ist jede Zahl von 1 bis 9 genau 1x enthalten? Frage 2: Ist die Zahl 7 enthalten? Was sagt Dein Algorithmus? |
Re: Prüfen ob Integer in Array?
Zitat:
1 + 1 + 4 ... = 45 Wenn du zu 100% sagen kannst, dass nur Zahlen von 1 bis9 drin sind und immer nur eine Zahl einmal, dann reicht eine einfaches Addieren. Aber wenn du das sagen kannst, dann musst du nicht prüfen. :p |
Re: Prüfen ob Integer in Array?
Zitat:
Code:
:zwinker: Ich denke, du siehst, worauf das rausläuft ===> simpel, aber grottenfalsch ;)
1+2+3+4+5+6+7+8+9 => 45 //Alle Zahlen von 1 bis 9 genau einmal vorhanden, wie gewünscht
2+2+2+4+5+6+7+8+9 => 45 2+2+3+3+5+6+7+8+9 => 45 2+2+3+3+6+6+7+7+9 => 45 ... ... ... |
Re: Prüfen ob Integer in Array?
Zitat:
Code:
Es geht aber auch so oder anders:
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45
Code:
MfG
1 + 1 + 4 + 4 + 5 + 6 + 7 + 8 + 9 = 45
Edit: Hat der rote Kasten schon Oster-Urlaub :gruebel: Edit 2: Die Addier-"Lösung" wär möglich, wenn jede Zahl nur einmal vorkommen kann und urbanbruhin prüfen wollte, ob schon alle Zahlen von 1 bis 9 im Array sind. |
Re: Prüfen ob Integer in Array?
tschuldigung :oops:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz