Re: Lotto HILFE´!!!
hallo
danke für eure antworten also ich hänge and der stelle mit until not und an dieser komischen menge und wenn ich den quellcode so durchlaufen lasse kommt nur eine zahl in der listbox. sorry, dass ich wahrscheinlich mich richtig unprofessionell anhöre, aber bin echt überfordert momentan- schulstress/abistress grüße lisa |
Re: Lotto HILFE´!!!
Zitat:
|
Re: Lotto HILFE´!!!
Fangen wir mal an:
for.. Do führt nur die nächste Anweisung in Schleife aus. Wenn du mehrere Anweisungen ausführen willst, musst du es in Begin..End kapseln
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i,y: integer; begin i:= 0; // unnötig bei For-Schleifen for i:= 1 to 6 DO Y:= random(49)+1; // hier läuft dein Programm 6 mal lang ( für i von 1 - 6 ) ListBox1.Items.Add(inttostr(y));// erst anschliessend läuft dein Programm hierhin und schreibt das letzte y in die Box end;
Delphi-Quellcode:
So hätteste zumindest schonmal alle Zahlen in der Box. Allerdings benutzt du dein Set ja gar nicht und hast somit auch keine Prüfung auf doppelte Zahlen.
procedure TForm1.Button1Click(Sender: TObject);
var i,y: integer; begin for i:= 1 to 6 DO Begin Y:= random(49)+1; ListBox1.Items.Add(inttostr(y)); End; end; |
Re: Lotto HILFE´!!!
hallo,
schon mal vielen vielen Dank vor allem für die letzte Antwort, die hat mich schon mal sehr weitergebracht. Nur stellt sich jetzt noch die frage wie man das überprüfen kann (until not); dass man nicht zweimal die gleiche erzeugt. Vielen Dank nochmal und schöne baldige Weihnachten Viele Grüße Lisa |
Re: Lotto HILFE´!!!
Dafür ist wohl das Set gedacht.
Guck dir mal in der Delphi-Hilfe den Begriff Mengentypen an, wenn ihr das noch nicht im Unterricht hattet. |
Re: Lotto HILFE´!!!
oder schau einfach nach, ob die Zahl schon in der ListBox steht, also sowas der Art:
Delphi-Quellcode:
(ungetestet, da grad kein Delphi zu Hand)
repeat
Y:=random(49)+1; until ListBox1.Items.IndexOf(IntToStr(y))=-1; |
Re: Lotto HILFE´!!!
Hallo,
also erstmal klappt das jetzt, dass wenigstens 6 Zahlen in der Listbox erscheinen- dafür bin ich unendlich froh. Jetzt könnte man ja die for schleife in repeat until umändern. begin for i:= 1 to 6 DO repeat Y:= random(49)+1; ListBox1.Items.Add(inttostr(y)); until not lottozahl= y; end; Die rote zeile funktioniert ja nicht, aber so in der art glaube ich sollten wir das machen. Desweiteren haben wir noch aufgeschrieben verschiedene mengenoperationen, wie differenzmenge und so, aber weiß nicht ob das was damit zu tun hat. Vielen Dank euch allen nochmal Lisa |
Re: Lotto HILFE´!!!
hallo,
also wenn man das so versucht- klappts leider nicht--- unendlich viele zahlen in der listbox erscheinen dann. begin for i:= 1 to 6 DO repeat Y:= random(49)+1; ListBox1.Items.Add(inttostr(y)); until not ListBox1.Items.IndexOf(IntToStr(y))=-1; end; danke! grüße lisa |
Re: Lotto HILFE´!!!
1. Benutz für Quellcode bitte die [delphi] Tags ( oder den Button Delphi-Code ). Ist einfach lesbarer.
2. Ja, das geht mit den Mengen. Darum sag ich ja schau mal in der Hilfe nach. In sets kannst du mit + Werte hinzufügen mit - entfernen und mit <Wert> in <Set> kannst du abfragen, ob der Wert schon in der Menge ( der Lottozahlen ) enthalten ist |
Re: Lotto HILFE´!!!
Hallo Lisa,
erstmal verwende bitte die [ delphi] [ /delphi]-Tags (ohne Leerzeichen), dann kann man den Code auch vernuenftig lesen. Zum Problem: Der Code den du gepostet hast ist falsch. Du willst ja keine Zahl doppelt haben. Nachdem du kein Set benutzt, musst du es so machen wie Fiasko gesagt hat:
Delphi-Quellcode:
Nun die Erklaerungen:
for i:= 1 to 6 do
begin repeat Y:=random(49)+1; until ListBox1.Items.IndexOf(IntToStr(y))=-1; ListBox1.Items.Add(inttostr(y)); end; wir machen das Ganze 6 mal, wie bereits gehabt. Anstatt aber nun die Zahl zu suchen, und dann hinzuzufuegen, suchen wir nun bis dir Zahl nicht mehr in der ListBox ist. Dies erledigt der Befehl ListBox1.Items.IndexOf (IndexOf). Wird das Element nicht gefunden, so liefert die Funktion -1 zurueck. In dem Fall fuegen wir die Zahl der Liste hinzu, ansonsten suchen wir weiter. Greetz alcaeus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:53 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