Einzelnen Beitrag anzeigen

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