@metze222: Du hast Glück, ich habe so etwas vor nem Monat auch geschrieben und habe gerade sowieso nichts zu tun, also hab ich den Code gearde mal schnell kommentiert
1.: Eine Klasse TMuenzhaufen(ich weiß, toller Name
) mit den Eigenschaften Gesamt für den Gesamtwert, dem Array Muenzen für die Anzahl der einzelnen Münzen und der Prozedur zum trennen.
Delphi-Quellcode:
type
TMuenzhaufen = class
Gesamt : Integer;
//Gesamtwert
Muenzen: Array[0..5] of Integer;
//Array mit den Münzen:
//0: 50Cent, 1: 20Cent, 2: 10Cent, 3: 5Cent, 4: 2Cent, 5: 1Cent
procedure Trennen;
end;
2.: Die procdedure trennen, dürfte durch Kommentare eigentlich klar sein:
Delphi-Quellcode:
procedure TMuenzhaufen.Trennen;
var
i, j: Integer;
const
Muenze:
Array[0..5]
of Integer = (50, 20, 10, 5, 2, 1);
//Array mit allen Münzen, von groß nach klein
begin
j := 0;
//Bei der größten Münze beginnen
i := Gesamt;
while i > 0
do
//Schleife durchlaufen, solange noch Restgeld da ist
begin
while i >= Muenze[j]
do
//Solange mehr Geld da ist, als die aktuelle Münze wert ist, ..
begin
Inc(Muenzen[j]);
//..die Anzahl der aktuellen Münze um 1 erhöhen und..
Dec(i, Muenze[j]);
//.. den Wert der aktuellen Münze vom Gesamtwert abziehen
end;
Inc(j);
//Wenn der Gesamtwert kleiner als der Wert der aktuellen Münze ist
//(Schleife wurde verlassen), zur nächstkleineren Münze gehen
end;
end;
3.:Ein Beispielaufruf, in dem die Anzahl der einzelnen Münzen des Wertes aus Edit1 in Memo1 angezeigt werden:
Delphi-Quellcode:
var m:TMuenzHaufen;
begin
m := TMuenzhaufen.Create;
with m do
begin
try
Gesamt := StrToInt(Edit1.text);
Trennen;
Memo1.Clear;
Memo1.Lines.Add('50Cent-Münzen: '+IntToStr(Muenzen[0]));
Memo1.Lines.Add('20Cent-Münzen: '+IntToStr(Muenzen[1]));
Memo1.Lines.Add('10Cent-Münzen: '+IntToStr(Muenzen[2]));
Memo1.Lines.Add('5Cent-Münzen: '+IntToStr(Muenzen[3]));
Memo1.Lines.Add('2Cent-Münzen: '+IntToStr(Muenzen[4]));
Memo1.Lines.Add('1Cent-Münzen: '+IntToStr(Muenzen[5]));
finally
FreeAndNil(m);
end;
end;
Mfg
PS.: Du solltest dir aber mal Grundlagen-Tutorials angucken, denn die Schleifen sind neben Bedingungen(If-Abfragen) so ziemlich das Grundlegenste beim Programmieren, was man auf jeden Fall kennen sollte.