Hallo Community,
nach erfolgloser Suche und erschöpftem Gehirnschmalz bin ich hier gelandet, und hoffentlich könnt ihr mir auch weiterhelfen! Zuerst mal zu meiner Person, ich heiße Jan und bin 20 Jahre alt, Fachinformatiker im 2. Lehrjahr und bei mir zählt das Motto "geht nicht gibts nicht".
Leider steh ich nun vor einem Problem...
Ich sollte einen Algorithmus Programmieren um eine bestimmte Geldmenge im Kassenautomat zu bezahlen.
Dazu hab ich mir eine Klasse Geldmenge erstellt und einen Enum mit Muenzgrößen.
Ich hoffe der ist einigermaßen Verständlich so (hab die Variablen Namen wegen dem Verständnis angepasst).
Münze ist ein Enum mit den jeweiligen Münzen (10 Cent, 20 Cent usw..) und die Methode wert() gibt einen int Wert zurück der den Cent Wert der Münze repräsentiert. geldspeicher und rueckgeld sind Instanzen der Klasse Geldmenge.
Jetzt habe ich jedoch ein Problem: Dieser Algorithmus würde 60 Cent folgendermaßen zurückgeben:
1x 50 Cent, 1x 10 Cent.
Wenn ich im Geldspeicher 8x 20 Cent habe, aber keine 10 Cent, würde keine Rückgabe erfolgen, weil er ja erst 50 Cent ausgibt und dann bemerkt das er keine 10 Cent mehr hat aber 20 Cent zu groß ist.
Wie wäre es also möglich immer die größtmöglichen Münzen laut vorhandenen Geldspeicher auszugeben?
Er müsste irgendwie überprüfen: Wenn 1x 50 Cent + 1x 10 Cent = erfolglos, Dann 3x 20 Cent usw... bei natürlich allen Möglichkeiten von bis zur Geldart 20 Euro.
Ich steh total am schlauch, weiß jemand weiter?
nach erfolgloser Suche und erschöpftem Gehirnschmalz bin ich hier gelandet, und hoffentlich könnt ihr mir auch weiterhelfen! Zuerst mal zu meiner Person, ich heiße Jan und bin 20 Jahre alt, Fachinformatiker im 2. Lehrjahr und bei mir zählt das Motto "geht nicht gibts nicht".
Leider steh ich nun vor einem Problem...
Ich sollte einen Algorithmus Programmieren um eine bestimmte Geldmenge im Kassenautomat zu bezahlen.
Dazu hab ich mir eine Klasse Geldmenge erstellt und einen Enum mit Muenzgrößen.
Java:
for (int i = GrößteMünze; i >= KleinsteMünze; i--) {
Münze ma = i;
while (wechselgeld >= ma.wert() && geldspeicher.get(ma) > 0) {
rueckgeld.add(ma);
geldspeicher.sub(ma);
wechselgeld -= ma.wert();
}
}
Ich hoffe der ist einigermaßen Verständlich so (hab die Variablen Namen wegen dem Verständnis angepasst).
Münze ist ein Enum mit den jeweiligen Münzen (10 Cent, 20 Cent usw..) und die Methode wert() gibt einen int Wert zurück der den Cent Wert der Münze repräsentiert. geldspeicher und rueckgeld sind Instanzen der Klasse Geldmenge.
Jetzt habe ich jedoch ein Problem: Dieser Algorithmus würde 60 Cent folgendermaßen zurückgeben:
1x 50 Cent, 1x 10 Cent.
Wenn ich im Geldspeicher 8x 20 Cent habe, aber keine 10 Cent, würde keine Rückgabe erfolgen, weil er ja erst 50 Cent ausgibt und dann bemerkt das er keine 10 Cent mehr hat aber 20 Cent zu groß ist.
Wie wäre es also möglich immer die größtmöglichen Münzen laut vorhandenen Geldspeicher auszugeben?
Er müsste irgendwie überprüfen: Wenn 1x 50 Cent + 1x 10 Cent = erfolglos, Dann 3x 20 Cent usw... bei natürlich allen Möglichkeiten von bis zur Geldart 20 Euro.
Ich steh total am schlauch, weiß jemand weiter?
Zuletzt bearbeitet: