Ein Betrag (max. 10000€) soll ausgegeben werden.
Einagabe: auszubezahlender Betrag.
Ausgabe: Anzahl der (verschiedenen) benötigten Geldscheine und Münzen.
Senior Sanchez
2005-04-26, 13:08:23
Ein Betrag (max. 10000€) soll ausgegeben werden.
Einagabe: auszubezahlender Betrag.
Ausgabe: Anzahl der (verschiedenen) benötigten Geldscheine und Münzen.
Sehr karg die ganze beschreibung. Bitte mehr Infos (Programmiersprache?!?).
Aber es läuft im grunde Auf ganzzahlige Division und Modulo(Rest)-Berechnung hinaus.
mfg Senior Sanchez
visual basic sry vergaß ...
Senior Sanchez
2005-04-26, 13:28:31
Naja, ich kann dir hier nur nen Pseudo-Algorithmus präsentieren (habe vb nie gelernt ;) ), aber es sieht im Grunde so aus.
GELDMENGE / 500 = anzahl 500 euro scheine (dsa ist eine ganzzahlige division)
NEUE_GELDMENGE = GELDMENGE - anzahl 500 euro scheine * 500
NEUE_GELDMENGE / 200 = anzahl 200 euro scheine
NEUE_GELDMENGE = NEUE_GELDMENGE - anzahl 200 euro scheine * 200
NEUE_GELDMENGE / 100 = anzahl 100 euro scheine.....
und so weiter. Das ist die einfachste und dirrrrty Variante, das ganze hart zu kodieren. Wenn de es besser machen willst, legste dir nen integer-Array (dann musste mit cent rechnen, kannst aber auch über gebrochene zahlen gehen, dann gehts mit euro) an, wo alle möglichen Geldscheine/Münzen hinterlegt sind.
Dann iterierst du inner Schleife einfach über dieses Array und teilst die _aktuelle noch aufzuteilende geldmenge_ ganzzahlig durch den aktuellen Geldschein/Münze und berechnest die geldmenge neu. Die Anzahl der jeweiligen Scheine/Münzen kannste wieder in einem zweiten Array hinterlegen sodass de es am Ende leicht ausgeben kannst. Kannst natürlich auch gleich inner Schleife ausgeben.
Hier mal im Java-Style (das einlesen der geldmenge spare ich mir jetzt):
float[] zahlungsmittel = new float[] {500, 200, 100, 50, 20, 10, 5, 2, 1, 0.50, 0.20, 0.10, 0.05, 0.02, 0.01};
for(int i=0, len = zahlungsmittel.length; i < len; i++) {
int anzahl = (int) geldmenge / zahlungsmittel[i];
System.out.println("Man braucht " anzahl + " x " + zahlungsmittel[i]);
geldmenge = geldmenge - anzahl * zahlungsmittel[i];
}
Das sollte so laufen, habs jetzt nicht getestet. (das casting auf int könnte kritisch sein, eventuell musste halt abrunden)
mfg Senior Sanchez
vBulletin®, Copyright ©2000-2024, Jelsoft Enterprises Ltd.