Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
Delphi 10 Seattle Enterprise
|
AW: Einfache "Kugeln Ziehen"-Aufgabe mit Schleife
25. Jan 2012, 22:07
ok, ich hatte die Schleife übersehen
Ich habe deinen Ursprungs-Quelltext mal etwas modifiziert und entsprechende Kommentare hinzugefügt
Delphi-Quellcode:
procedure TForm1.KugelnZiehen(Sender: TObject);
var s,w,fall,zug:integer;
begin
w:=StrToIntDef( Weiss.text, 0 ); // Wenn keine Zahl im Edit-Feld,
s:=StrToIntDef( Schwarz.text, 0 ); // dann wird der Default-Wert genommen, hier 0
zug := 0; // Initialisierung vergessen, ansonsten hat Zug einen Zufallswert
// Wenn die Summe aus s und w < 1 ist, dann hast du eine Endlosschleife, darum
if ( s + w ) < 1 then
begin
ShowMessage( 'Ungültige Eingabe für Schwarz und Weiß!' );
Exit; // diese procedure wird nun verlassen
end;
repeat
begin
// randomize; // Sollte nur einmal in Anwendung aufrufen werden
// fall:=(Random(2)+1); {Welcher Fall tritt ein?}
// Random( 2 ) + 1 ergibt Werte von 1..2 Fall 3 würde also niemals eintreten
fall := Random( 3 ) + 1; // jetzt gibt es Werte von 1..3 :o)
Case fall of
1: begin {Zwei Schwarze Kugeln rausgenommen, eine Schwarze wieder rein}
if s>=2 then
begin
s:=s-1;
zug:=zug+1;
end
// else
end;
2: begin {Zwei Weiße Kugeln rausgenommen, eine Schwarze wieder rein}
if w>=2 then
begin
w:=w-2;
s:=s+1;
zug:=zug+1;
end
// else
end;
3: begin {Zwei unterschiedliche Kugeln rausgenommen, eine Schwarze wieder rein}
if (s>0) and (w>0) then
begin
s := s-1;
zug:=zug+1;
end
// else
end;
end;
end;
until s+w=1;
// Textausgabe.Caption:='Züge: '+(inttostr(zug))+' Schwarze Kugeln: '+(inttostr(zug))+' Weiße Kugeln: '+(inttostr(zug))+' ';
// ist etwas umständlich und du hast immer nur die Variable Zug angegeben, besser so
// %d ist ein Platzhalter für eine Integer-Zahl
Textausgabe.Caption := Format( 'Züge: %d Schwarze Kugeln: %d Weiße Kugeln %d', [zug, s, w] );
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
Geändert von Sir Rufo (25. Jan 2012 um 22:12 Uhr)
|
|
Zitat
|