Wechselautomat

Bitte aktiviere JavaScript!
Guten Tag,
Ich habe eine Schulaufgabe bekommen und brauche unbedingt Hilfe. Ich weiß nicht wie ich das angehen soll kann mir jmd helfen ?

Aufgabe :
Die Aufgabe beschreibt einen Wechselautomaten, dieser soll einen Betrag x in Münzen ausgeben. Dabei sollen möglichst wenig Münzen zurückgegeben werden.
Der Automat hat Zugriff auf so viele Münzen, wie er benötigt. Geldscheine kann er jedoch nicht ausgeben.

Ein Beispiel:
Es sollen 4,36€ zurückgegeben werden.
Der Automat sollte berechnen, dass er 2x2€, 1x0,20€, 1x0,10€, 1x0,05€ und 1x0,01€ ausgeben muss.

Die Ausgabe der Geldstücke kann in der Konsole stattfinden, es wird keine Oberfläche für das Programm benötigt.
 
Geh erstmal komplett von der Programmierung weg. Wie würdest du die Aufgabe denn lösen wenn du jemanden das Wechselgeld ausgeben müsstest und dabei so wenig Münzen wie möglich nutzen sollst?
 
Ich würde z.B wenn einer 10 Euro zurückbekommen sollte ihn 5 mal 2 Euro stücke geben, weil das ja dann die wenigste münzanzahl wäre, anstatt z.B 10 mal 1 Euro Stücke
 
So du würdest also mit der Münze, die den höchsten Wert hat, anfangen und schauen ob, du diesen Wert vom Betrag abziehen kannst. Was würdest du danach machen? Wann weißt du, dass du fertig bist mit der Auszahlung?
 
Ich würde solange auszahlen, bis der der Gesamtbetrag ausgezahlt wurde. Halt jetzt 2 mal 2 Euro und danach wäre es nicht mehr möglich weitere 2 Euro auszahlen, weil die 4 Euro sonst überschritten werden und danach würde ich mich um die Cents kümmern
 
Genau. Jetzt brauchst du a) eine Möglichkeit um dir die Münz-Beträge zu merken und b) eine Möglichkeit um dir zu merken, wie oft du eine Münze verwendest hast. Fällt dir da eine Möglichkeit ein?
 
boolean könnte mir ja was bringen, weil das programm ja dann mit true und false sieht ob der gewünschte Geldbetrag jetzt ausgezahlt wurde oder nicht?
 
Und was wenn der Betrag mehrmals ausgezahlt wird? Wie willst du da mit einem boolean zählen wie oft er ausgezahlt wurde?
 
Hinweis: Schon mal was von Arrays gehört?
Hast du dir den Link auf den anderen Thread mal angeschaut?
 
Dann versuch dir doch mal zu überlegen wie du das mit arrays umsetzen könntest (noch mal der Hinweis auf den Link von oben)
 
Lass dir mal nicht alles aus der Nase ziehen ;) Was genau verstehst du denn nicht?
Was wir bereits festgestellt haben:
Code:
Der Algorithmus muss so lange laufen, bis die auszuzahlende Summe ausgezahlt wurde
Der Algorithmus muss über alle verfügbaren Münzen laufen
Falls Mögliche: Zahle den Teil der Summe mit der aktuellen Münze aus
Falls das nicht mehr Möglich ist: gehe zur nächsten Münze
Du hast nun schon den Hinweis auf Arrays und sogar eine fertige Lösung (in dem Link) bekommen. Mittels Arrays kannst du mehrere Werte speichern und mittels Index darauf zugreifen. Hier mal ein kleiner Hinweis:
Was wäre wenn man Wert der verfügbaren Münzen in einem double Array speichert und in einem int Array speichert man wie oft welche Münze ausgezahlt wurde. Dabei gehört der Wert aus dem double Array an Stelle 0 zu dem Wert aus dem int Array an Stelle 0.
Java:
double[] coins = { 2d, .5d };
int[] amount = { 1, 0 };
Wir hätten hier also 1 x 2,00€ und 0 x 0,50€ ausgezahlt.
Mit einer Schleife könnte man nun durch das Münzen-Array gehen und den Betrag solange auszahlen wie es geht. Dabei wird der Wert in dem Anzahl-Array immer um eins erhöht. Das ganze passiert solange wie entweder noch Münzen da sind oder wir noch mehr auszahlen müssen.
 
Ich empfehle zusätzlich, ausschließlich mit Ganzzahlwerten zu arbeiten (also alle Werte als Centbeträge; nicht 0.50 sondern 50). Dann wird die Arithmetik sehr einfach: Die einzigen Operationen, die man dann noch braucht, sind Ganzzahldivision und Modulo.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben