Free/TurboPascal. Wie kann ich doppelte Zahlen aussortieren?
Hi, ich wollte mir vor kurzem mit Pascal ein Lotto-Programm programmieren. Ich bin schon so weit und habe es so programmiert, dass die Zahlen in einer Reihe mit Strichen kommen, also ungefähr so: 5-9-45-27-44-12. Das ist mein Programm:
program Lotto;
uses crt;
var a, e, i ,o, u, x: byte;
start: char;
begin
clrscr;
write('Möchten sie eine Lotto-Ziehung simulieren? (j/n)');readln(start);
if start = 'j' then begin
randomize;
a:= random(49) + 1;
e:= random(49) + 1;
i:= random(49) + 1;
o:= random(49) + 1;
u:= random(49) + 1;
x:= random(49) + 1;
write(a);
write(-e);
write(-i);
write(-o);
write(-u);
write(-x);
repeat until keypressed;
end
end.
Das Problem ist das manche Zahlen doppelt vorkommen können. Wie kann ich das ändern?
1 Antwort
Du generierst eine Liste mit 1 bis 49. Dann schreibst Du eine Schleife, in der eine Zufallszahl x von 1 bis Anzahl der Listenelemente gewählt wird. Das Listenelement an der x-ten Stelle wird ausgegeben und aus der Liste entfernt. Die Schleife wird sechsmal durchlaufen.
Wenn es Dir zu schwer erscheint, eine Liste zu programmieren, kannst Du auch ein Array definieren. Anstatt das ausgegebene Element zu löschen setzt Du das Arrayelement auf 0.
Wenn es zu schwer ist, das x-te Element im Array zu finden: Berechne in der Schleife eine Zufallszahl zwischen 1 und 49 und schaue im Array nach, ob an der x-ten Stelle schon eine 0 steht. Falls ja, berechne x noch mal.