Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Schleife stürzt ab


takuan - Mo 14.10.02 21:52
Titel: Schleife stürzt ab
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?


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. - 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:

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


takuan - Mo 14.10.02 22:19

stimmt, das is ja noch besser*g*

donkschön!


gruß takuan