Hai,
ich bekomme zwar auch eine 5 weil ich die Kugel wieder zurück werfe; aber eventuell ist es für einen Anfänger trotzdem leichter zu verstehen
Delphi-Quellcode:
const
kugeln = 49;
ziehungen = 6;
type
Tzahlen = Array[1..kugeln] Of Char;
procedure Lotto (Var zahlen : TZahlen) ;
var
ndx,
gezogen : Integer;
neueZahl : Boolean;
begin
Randomize;
FillChar(zahlen,kugeln,Ord(' '));
for ndx := 1 to ziehungen do
begin
neueZahl := False;
Repeat
gezogen := Random(kugeln)+1;
if(zahlen[gezogen] <> 'X') then
begin
neueZahl := True;
zahlen[gezogen] := 'X';
end;
Until (neueZahl)
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
ndx : Integer;
gezogen : TZahlen;
begin
Lotto (gezogen);
memo1.Clear;
for ndx := 1 to kugeln do
begin
if (gezogen[ndx]) ='X' then
begin
Memo1.Lines.Add (IntToStr (ndx));
end;
end;
end;
Zitat von
negaH:
..... Um die Sache schön Speichereffizient zu machen verzichten wir auf ein Array[0..48] of Boolean o.ä.....
Hai Hagen,
wiedersprichst Du dir da nicht? Du benutzt doch selber zwei Array in deiner Funktion.
Aber Matematisch und Logisch gesehen ist dein Code der optimale.
Stephan B.
"Lasst den Gänsen ihre Füßchen"