das Programm generiert random einen (Weiten-)Wert zwischen 50 und 150, der erraten werden muss. Der zu erratende Wert wird über die Eingabe zweier Werte (Geschwindigkeit & Wurfwinkel) für die Weitenberechnung ermittelt. Hat jemand eine Idee, warum die Meldungen in Abhängigkeit der Nähe zum Suchwert nicht funktionieren?
Code: Alles auswählen
program Wurfweiten;
var
Anzahl: Integer = 0;
Abwurfwinkel, Geschwindigkeit, Bogenmass, Wurfweite, Wurfweite_gerundet: real;
Spielwunsch: string;
Zufallszahl: Integer;
Label Sprungmarke;
begin
Sprungmarke:
Zufallszahl := Random(150) + 50;
WriteLn (Zufallszahl);
WriteLn ('***Wurfweiten - Ratespiel***' + chr(10));
repeat
Write ('Mit welcher Geschwindigkeit v 0 werfen Sie [m/s]: ');
ReadLn (Geschwindigkeit);
Write ('Wie ist Ihr Abwurfwinkel [°]: ');
ReadLn (Abwurfwinkel);
Bogenmass := (3.14*Abwurfwinkel)/180;
Wurfweite := ((Geschwindigkeit*Geschwindigkeit)*sin(2*Bogenmass))/9.81;
Wurfweite_gerundet := trunc(Wurfweite);
Inc (Anzahl);
if (Wurfweite_gerundet >= (ZufallsZahl + 20)) then
WriteLn ('Viel zu weit - Die Wurfweite beträgt:', trunc(Wurfweite));
if (Wurfweite_gerundet < (ZufallsZahl + 20)) and (Wurfweite_gerundet > (ZufallsZahl + 10)) then
WriteLn ('zu weit - Die Wurfweite beträgt:', trunc(Wurfweite));
if (Wurfweite_gerundet < (ZufallsZahl + 10)) and (Wurfweite_gerundet > (ZufallsZahl + 5)) then
WriteLn ('nur noch etwas zu weit - Die Wurfweite beträgt:', trunc(Wurfweite));
if (Wurfweite_gerundet <= (ZufallsZahl - 20)) then
WriteLn ('Viel zu kurz - Die Wurfweite beträgt:', trunc(Wurfweite));
if (Wurfweite_gerundet < (ZufallsZahl - 20)) and (Wurfweite_gerundet > (ZufallsZahl - 10)) then
WriteLn ('zu kurz - Die Wurfweite beträgt:', trunc(Wurfweite));
if (Wurfweite_gerundet < (ZufallsZahl - 10)) and (Wurfweite_gerundet > (ZufallsZahl - 5)) then
WriteLn ('nur noch etwas zu kurz - Die Wurfweite beträgt:', trunc(Wurfweite));
until (Zufallszahl <= (Wurfweite_gerundet + 5)) and (Zufallszahl >= (Wurfweite_gerundet - 5));
WriteLn ('Sie haben ',trunc(Wurfweite), ' m weit geworfen');
WriteLn ('Treffer !');
WriteLn ('Gratulation, Sie haben das Ziel nach ', Anzahl, ' Versuchen getroffen. Es war ', trunc(Zufallszahl), ' m entfernt.');
WriteLn ('Noch ein Spiel? JA / NEIN');
ReadLn (Spielwunsch);
if Spielwunsch = 'JA' then
Goto Sprungmarke
else if Spielwunsch = 'NEIN' then
WriteLn ('Auf Wiedersehen')
end.