Hey Leute,
Im Anhang findet ihr einen von mir programmierten kleinen "Geldautomat". (Hausaufgabe)
Man gibt einen Preis ein und einen Schein, mit dem man bezahlt.
Mit Hilfe von While-Do-Schleifen soll dann der "Automat" Kleingeld in einer Listbox ausgeben, mit möglichst wenig Münzen.
Dies klappt auch soweit, aber wenn man z.B. den Preis von 4,98€ eingibt (10-Euroschein) vergisst er einen cent.
Und bei 4,99 ebenfalls. Bei 4.97 stimmts allerdings wieder.
Woran könnte das liegen?
Hier mein Quelltext:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var S:integer;
Preis:real;
R:real;
begin
Preis:=strtofloat(edit1.text);
S:=strtoint(edit2.text);
listbox1.clear;
R:=S-Preis;
if (R<9.99) then
begin
While R>=2
Do begin
listbox1.Items.add('2-Euro-Stück');
R:=R-2;
end;
While R>=1
Do begin
listbox1.Items.add('1-Euro-Stück');
R:=R-1;
end;
While R>=0.5
Do begin
listbox1.Items.add('50-cent-Stück');
R:=R-0.5;
end;
While R>=0.2
Do begin
listbox1.Items.add('20-cent-Stück');
R:=R-0.2;
end;
While R>=0.1
Do begin
listbox1.Items.add('10-cent-Stück');
R:=R-0.1;
end;
While R>=0.05
Do begin
listbox1.Items.add('5-cent-Stück');
R:=R-0.05;
end;
While R>=0.02
Do begin
listbox1.Items.add('2-cent-Stück');
R:=R-0.02;
end;
While R>=0.01
Do begin
listbox1.Items.add('1-cent-Stück');
R:=R-0.01;
end;
end
else application.messagebox('Der Automat gibt ausschließlich Kleingeld und nur bis 9,99€.','Stop!',mb_ok)
end;
end.
p.s. R = Rückgeld
S = Schein