.. eigentlich wollte ich ja von den ganzen while Schleifen Gedöns weg.
Im Prinzip könnte es doch so laufen:
Delphi-Quellcode:
Rückgeld = gezahltesGeld - Fahrkarte
While Rückgeld > 0 do
begin
100erRück := Rückgeld div 100;
if 100erRück > 100erVorhaden then
begin
Rückgeld := Rückgeld - (100erVorhanden * 100);
end
else
begin
100erVorhanden := 100erVorhanden - 100erRück;
Rückgeld := Rückgeld - (100erVorhanden * 100)
end;
...
50er
...
20er
...
10er
end;
Wenn mann noch die Schein und Münzwerte (und eventuell deren Anzahl) in ein Array packt
kann man durch das Array laufen und kann sich die lange Abfolge
von Abprüfugen sparen.
So könnte man ein Record Geld erstellen
Delphi-Quellcode:
TGeld = record
wert : Integer;
anzahl : Integer;
end;
und ein Array Geldspeicher
GeldSpeicher = Array [0..10] of TGeld;
Delphi-Quellcode:
Rückgeld = gezahltesGeld - Fahrkarte;
for i:=0 to length(Geldspeicher) -1 do
if Rückgeld > 0 then
begin
tempRück := Rückgeld div Geldspeicher[i].wert;
if tempRück > Geldspeicher[i].anzahl then
begin
Rückgeld := Rückgeld - (Geldspeicher[i].anzahl * Geldspeicher[i].wert);
Geldspeicher[i].anzahl:=0;
end
else
begin
Geldspeicher[i].anzahl := Geldspeicher[i].anzahl - tempRück;
Rückgeld := Rückgeld - (tempRück * Geldspeicher[i].wert)
end;
end;
Grüße
Klaus