AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Prüfen ob Integer in Array?

Ein Thema von 100nF · begonnen am 13. Apr 2006 · letzter Beitrag vom 14. Apr 2006
Antwort Antwort
Seite 1 von 3  1 23   
100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#1

Prüfen ob Integer in Array?

  Alt 13. Apr 2006, 18:54
hallo zusammen,

ich hoffe mal das ist die richtige sparte...

also ich habe ein array:
var a: Array[0..8] of Integer; nun möchte ich prüfen, ob in diesem array jede zahl von 1 bis 9 GENAU 1 MAL vorkommt.
ich wollte das so prüfen:
Delphi-Quellcode:
if 1 in a then // blabla
if 2 in a then // blabla
if 3 in a then // blabla
//...
leider geht das ja nicht mit arrays.

wie kann ich prüfen ob z.B. die Zahl 1 in dem array ist?

gruss
urbanbruhin
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.479 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Prüfen ob Integer in Array?

  Alt 13. Apr 2006, 18:55
Da musst du wohl oder übel eine FOR-Schleife bemühen.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Prüfen ob Integer in Array?

  Alt 13. Apr 2006, 19:28
Hallo,

falls das zu prüfende Array immer genau 9 Elemente besitzt, hilft Dir vielleicht folgender Code:

Delphi-Quellcode:
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;
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:

if (4 in s) then... Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Prüfen ob Integer in Array?

  Alt 13. Apr 2006, 19:42
Hai ihr,

hier mal mein Ansatz für diesen Fall
Delphi-Quellcode:
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;
Eigentlich mache ich nichts anderes als das Bit an der Postition welche von TestArray[ndx] bestimmt ist zu negieren.
Ist aber nicht die schönste aller möglichen Lösungen
Stephan B.
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Prüfen ob Integer in Array?

  Alt 13. Apr 2006, 19:47
die wohl simpelste lösung ist das ganze zu addieren
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Prüfen ob Integer in Array?

  Alt 13. Apr 2006, 19:59
Zitat von pacman1986:
die wohl simpelste lösung ist das ganze zu addieren
Ok, gegeben sei folgende Zahlenmenge: (1, 2, 3, 3, 4, 5, 9, 9, 9).

Frage 1: Ist jede Zahl von 1 bis 9 genau 1x enthalten?
Frage 2: Ist die Zahl 7 enthalten?

Was sagt Dein Algorithmus?
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#7

Re: Prüfen ob Integer in Array?

  Alt 13. Apr 2006, 20:02
Zitat von pacman1986:
die wohl simpelste lösung ist das ganze zu addieren
1 + 2 + 3 ... = 45
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
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Prüfen ob Integer in Array?

  Alt 13. Apr 2006, 20:03
Zitat von pacman1986:
die wohl simpelste lösung ist das ganze zu addieren
OK, dann gehen wir mal davon aus, daß du recht hast
Code:
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
...
...
...
Ich denke, du siehst, worauf das rausläuft ===> simpel, aber grottenfalsch
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Thorben77

Registriert seit: 22. Okt 2004
359 Beiträge
 
#9

Re: Prüfen ob Integer in Array?

  Alt 13. Apr 2006, 20:04
Zitat von pacman1986:
die wohl simpelste lösung ist das ganze zu addieren
Dann muss aber das Ergebnis nicht stimmen:
Code:
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45
Es geht aber auch so oder anders:
Code:
1 + 1 + 4 + 4 + 5 + 6 + 7 + 8 + 9 = 45
MfG

Edit: Hat der rote Kasten schon Oster-Urlaub

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.
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Prüfen ob Integer in Array?

  Alt 13. Apr 2006, 20:06
tschuldigung
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz