Thema: Geldautomat

Einzelnen Beitrag anzeigen

Matz4000

Registriert seit: 21. Dez 2010
14 Beiträge
 
#1

Geldautomat

  Alt 2. Mär 2011, 17:34
Delphi-Version: 5
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
Angehängte Dateien
Dateityp: zip Project1.zip (198,1 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat