Autor Beitrag
takuan
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 14.10.02 21:52 
Sorry, bin noch ein ziemlich Newbie, wahrscheinlich bin ich einfach zu dumm*g*

will mir ein simples würfelprogramm schreiben und brauche eine schleife, damit die null nicht vorkommt, ich habe es mit der while und der repeat-schleife probiert,aber bei beiden stürzt das programm ab...
kann mir einer sagen warum?

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
procedure TForm1.Button1Click(Sender: TObject);
const z=7;
var a,b,c,d,e : Real;
begin
a := strtofloat(edit1.text);
b := strtofloat(edit2.Text);
c := strtofloat(edit3.Text);
d := strtofloat(edit4.Text);
e := strtofloat(edit5.text);
edit1.text := inttostr(random(z));
edit2.text := inttostr(random(z));
edit3.text := inttostr(random(z));
edit4.text := inttostr(random(z));
edit5.text := inttostr(random(z));
repeat
edit1.text := inttostr(random(z));
until a>0;
repeat
edit2.text := inttostr(random(z));
until b>0;
repeat
edit3.text := inttostr(random(z));
until c>0;
repeat
edit4.text := inttostr(random(z));
until d>0;
repeat
edit5.text := inttostr(random(z));
until e>0;

end;


wenn ich die schleife nicht drinhab, läuft es...
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 14.10.02 22:10 
Hi!

Die Abbruchbedingung der Schleife bezieht sich auf einen Wert, der sich während des Schleifendurchlaufs gar nicht ändert! D.h. hierbei:
ausblenden Quelltext
1:
2:
3:
repeat 
edit1.text := inttostr(random(z)); 
until a>0;

bleibt a unverändert. War es am Anfang kleiner oder gleich Null, wird es dass bis in alle Ewigkeit bleiben, weil es sich während der Schleife nicht ändert und diese auch keine VEranlassung hat abzubrechen.

Aber Du brauchst die Schleifen gar nicht. Wenn die Null nicht vorkommen soll, verminderst Du das Argument, welches du momentan in der Randomfunktion hast, um eins und addierst eins zur erzeugten Zufallszahl hinzu. Damit erhälst Du immer einen Wert, der größer oder gleich eins ist.

MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
takuan Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 14.10.02 22:19 
stimmt, das is ja noch besser*g*

donkschön!


gruß takuan