Hallo.
Ich habe ein Problem, und zwar funktioniert das Programm nicht so, wie ich es gerne hätte.
Das Programm soll Zufallszahlen erzeugen, und zwar zwischen 0 und 4. Also mit dem Befehl random(5).
Dann soll es Fünfmal eine Zufallszahl erzeugen, und dann soll noch kontrolliert werden, ob diese Zahl bereits vorher einmal erzeugt worden ist. Wenn ja, soll nochmal eine Zufallszahl erzeugt werden, solange bis ich fünf verschieden Zufallszahlen habe. In diesem Fall konkret wäre es also ein Programm, dass mir die Ziffen 0-4 in einer zufälligen Reihenfolge anzeigt.
Folgenden Programmcode habe ich mir dafür Entwickelt:
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: 32: 33: 34: 35:
| var i,z,u:integer; zahl:array [1..5] of integer; gleich:boolean; eingabe:string; begin randomize; i:=0; gleich:=false; repeat begin i:=i+1; zahl[i]:=random(5); if (i>=2) then begin z:=0; repeat begin z:=z+1; if (zahl[i]=zahl[z]) then begin i:=i-1; gleich:=true; end; end; until (((z>=i-1) and (gleich=false)) or (gleich=true)); end; end; until (i>=5); for u:=1 to 5 do begin eingabe:=eingabe+inttostr(zahl[u]); end; edit1.text:=eingabe; end; |
Das Programm soll dann nämlich eine Zufallszahl erzeugen.
Dann, ab der Zweiten Zahl, sollen alle Zahlen davor überprüft werdne, ob sie gleich der neuen Zufallszahl sind. Wenn ja, soll an der Selben Position eine neue Zufallszahl erzeugt werden. Ich hoffe, ihr könnt etwas durch den Code durchblicken. Ich kann den Fehler nicht finden, weil das Programm nicht das macht, wie oben beschrieben. Oder habe ich einfach nur einen Denkfehler?
Danke schonmal für Antworten.