procedure TForm1.WechselgeldAusgeben(
var ABetrag: Currency; AMuenzwert: Currency);
begin
While ABetrag >= AMuenzwert
do
begin
ABetrag := ABetrag - AMuenzwert;
If AMuenzwert >= 1
then ListBox1.Items.Add(Format('
%d-Euro-Stück', [Round(AMuenzwert)]))
else ListBox1.Items.Add(Format('
%d-Cent-Stück', [Round(AMuenzwert * 100)]));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
S: Integer;
Preis, R: Currency;
begin
Preis := StrToCurr(Edit1.Text);
S := StrToInt(Edit2.Text);
ListBox1.Clear;
R := S - Preis;
If R > 9.99
then raise Exception.Create('
Der Automat gibt ausschließlich Kleingeld und nur bis 9,99€.');
WechselgeldAusgeben(R, 2.00);
WechselgeldAusgeben(R, 1.00);
WechselgeldAusgeben(R, 0.50);
WechselgeldAusgeben(R, 0.20);
WechselgeldAusgeben(R, 0.10);
WechselgeldAusgeben(R, 0.05);
WechselgeldAusgeben(R, 0.02);
WechselgeldAusgeben(R, 0.01);
end;