AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prüfen ob Integer in Array?

Ein Thema von 100nF · begonnen am 13. Apr 2006 · letzter Beitrag vom 14. Apr 2006
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Prüfen ob Integer in Array?

  Alt 13. Apr 2006, 19:34
Ist es ein sortiertes Array? Wenn ja, könnte man eine binäre Suche machen.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

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

Re: Prüfen ob Integer in Array?

  Alt 13. Apr 2006, 19:59
Zitat von 3_of_8:
Ist es ein sortiertes Array? Wenn ja, könnte man eine binäre Suche machen.
Also wenn das Array sortiert wäre, hätte er garantiert nicht gefragt
Delphi-Quellcode:
Result := true;
For i := 0 To 8 Do
  Result := Result AND (a[i] = i+1)
Da braucht man gar nicht viel suchen
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
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: Prüfen ob Integer in Array?

  Alt 13. Apr 2006, 20:17
Und wenn eine Zahl mehrmals vorkommt?

Aber ich glaube bei einem 10er Array ist es eh ziemlich egal, da wäre binäre Suche eigentlich Verschwendung.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

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

Re: Prüfen ob Integer in Array?

  Alt 13. Apr 2006, 20:20
Zitat von 3_of_8:
Und wenn eine Zahl mehrmals vorkommt?
Dann entspricht das Array nicht den geforderten Voraussetzungen und es wird false zurückgegeben
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
100nF

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

Re: Prüfen ob Integer in Array?

  Alt 13. Apr 2006, 21:02
hallo zusammen,

erstmal danke für eure antworten

ich werde morgen mal die vorschläge von Hawkeye219 und Sharky testen.
Ich denke das müsste so funktionieren.

ich dachte eben, mit arrays geht es so ähnlich wie "if x in Array"...

gruss
urbanbruhin
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

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

Re: Prüfen ob Integer in Array?

  Alt 13. Apr 2006, 21:08
"in" gibt es nur für Sets (Mengen).
Könntest aber auch einfach mal schauen, inwiefern sich dein Problem vielleicht auch mit Sets lösen lassen würde.
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
100nF

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

Re: Prüfen ob Integer in Array?

  Alt 14. Apr 2006, 08:31
Zitat von leddl:
"in" gibt es nur für Sets (Mengen).
Könntest aber auch einfach mal schauen, inwiefern sich dein Problem vielleicht auch mit Sets lösen lassen würde.
was ist denn genau der unterschied von sets und arrays?
ich habe gestern zum ersten mal mit arrays gearbeitet, und sets habe ich noch nie verwendet

aber mir ist es ja egal ob ich ein set oder ein array nehme, hauptsache es funktioniert.

EDIT: ich habs jetzt mal mit einem set probiert. hier die funktion, die überprüft ob jede zahl von 1 bis 9 einmal enthalten ist:
Delphi-Quellcode:
function TForm1.CorrectIntegers(i1, i2, i3, i4, i5, i6, i7, i8, i9: integer): boolean;
var s : set of 1..9;
begin
  result := false;
  Include(s, i1);
  Include(s, i2);
  Include(s, i3);
  Include(s, i4);
  Include(s, i5);
  Include(s, i6);
  Include(s, i7);
  Include(s, i8);
  Include(s, i9);
  if (1 in s) and (2 in s) and (3 in s) and (4 in s) and (5 in s) and
     (6 in s) and (7 in s) and (8 in s) and (9 in s) then result := true;
end;
und so habe ich die function dann getestet:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  showmessage(booltostr(correctintegers(5, 4, 6, 7, 2, 3, 8, 1, 9), true)); // das müsste true geben
  showmessage(booltostr(correctintegers(1, 9, 2, 8, 3, 7, 4, 6, 5), true)); // das auch true
  showmessage(booltostr(correctintegers(1, 2, 3, 4, 5, 6, 8, 8, 9), true)); // und das false
  showmessage(booltostr(correctintegers(1, 2, 3, 4, 5, 5, 7, 8, 9), true)); // und nochmals false
end;
bei den ersten zwei showmessages steht true drin, stimmt ja auch so. beim dritten sollte false stehen, kommt aber true raus
das vierte stimmt wieder, da kommt false raus...

weiss jemand was das problem ist?
  Mit Zitat antworten Zitat
emteg

Registriert seit: 16. Jun 2005
71 Beiträge
 
Delphi 2009 Architect
 
#18

Re: Prüfen ob Integer in Array?

  Alt 14. Apr 2006, 09:15
Ich hätte auch noch einen Vorschlag. Mein verfahren geht den array durch und speichert in einem vergleichs array, wie oft die gefundene zahl vorkommt. Dannach prüfe ich, ob die werte alle gleich 1 sind.

Delphi-Quellcode:
var MyArray: array [1..9] of Integer;
{...}

procedure TestMyArray;
var i, CurrInt: integer;
    TestArray: array [1..9] of integer;
    Valid: boolean;
begin
  //Erstmal alles im testarray auf 0 setzen.
  for i:=1 to 9 do
    TestArray[i]:=0;

  Valid:=true; //fangen wir mal positiv an
  for i:=1 to 9 do
  begin
    CurrInt:=MyArray[i]; //die aktuelle zahl auslesen
    try
      TestArray[CurrInt]:=TestArray[CurrInt]+1; //und im testarray eintragen
      if TestArray[CurrInt]<>1 then //prüfen, ob die zahl schon
      begin
        Valid:=false; //mal vorgekommen ist
        break;
      end;
    except
      Valid:=false; //wenn was nicht stimmt
    end;
  end;

  if Valid=true then
    ShowMessage('Alles stimmt!')
  else
    ShowMessage('Nix is!');
end;
  Mit Zitat antworten Zitat
Hawkeye219

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

Re: Prüfen ob Integer in Array?

  Alt 14. Apr 2006, 09:28
Zitat von urbanbruhin:
[weiss jemand was das problem ist?
Du mußt das Set zunächst initialisieren, sonst enthält es zufällige Werte:

Delphi-Quellcode:
var s : set of 1..9;
begin
  result := false;
  s := []; // <<----- hier
  Include(s, i1);
Die Abfrage kannst Du vereinfachen. Statt

Delphi-Quellcode:
if (1 in s) and (2 in s) and (3 in s) and (4 in s) and (5 in s) and
   (6 in s) and (7 in s) and (8 in s) and (9 in s) then result := true;
schreibst Du es so:
if (s = [1..9]) then result := True; Zumindest beim Test auf Gleichheit kannst Du Sets wie "normale" Variablen benutzen. Die Abfrage mit "in" hast Du ja offenbar schon verstanden.


Gruß Hawkeye
  Mit Zitat antworten Zitat
100nF

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

Re: Prüfen ob Integer in Array?

  Alt 14. Apr 2006, 10:48
hallo Hawkeye219,

danke für deine antwort, es funktioniert wunderbar

gruss
urbanbruhin
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 02:22 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