Münzwechselautomat
Bei einem Warenautomat soll Wechselgeld (Münzen) herausgegeben werden. Ein Programm soll nach der Eingabe des Wechselgeldes eine Liste der zurückgegebenen Wechselmünzen ausgeben.
Beispiel: Eisautomat in der Schule (den gab es mal), das gewählte Eis kostet 1,35 Euro, es wurden 2 Euro eingeworfen, folglich soll er Automat 0,65 Euro Wechselgeld zurückgeben. Welche Münzen gibt er zurück?
Antwort
1 * 50 Cent, 1 * 10 Cent, 1 * 5 Cent.Repräsentation der Münz-Schächte im Programm
Schacht Nr. | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
Münzwert in Cent | 1 | 2 | 5 | 10 | 20 | 50 | 100 | 200 |
Name der Münze | 1 Cent | 2 Cent | 5 Cent | 10 Cent | 20 Cent | 50 Cent | 1 Euro | 2 Euro |
In der Automaten-Simulation befinden sich 8 Münz-Schächte, die Wertigkeit und die Namen der Münzen werden durch zwei Arrays dargestellt, um das Problem zu vereinfachen, wird in Cent gerechnet:
public class Automat{
static final int mWert[] = {1,2,5,10,20,50,100,200}; // Liste mit den Wertangaben der Schächte
static final String mName[] = {"1 Cent","2 Cent","5 Cent","10 Cent","20 Cent","50 Cent","1 Euro","2 Euro"};
static void wechseln(int rest){
}
}
Das Schlüsselwort final definiert die Variable als Konstante {read only}.
mName[]-Liste beinhaltet die Namen der Münzen, die Elemente sind von Typ String (Zeichenketten).
Welchen Wert hat 'wert[4]', welchen Wert hat ‘name[4]'?
Antwort:
mWert[4| = 20; mName[4] = "20 Cent"Analyse des Ausgabe-Algorithmus
Wie kann bei gegebenen Wechselgeld-Wert die Anzahl der jeweiligen Rückgabe-Münzen ermittelt werden?
Idee: Beginne bei dem grössten Münzwert (Schacht 7). Teste wie oft der Münzwert im Wechselgeld enthalten ist und gebe ihn aus.
Wiederhole mit dem Resbetrag bei dem nächst kleineren Münzwert, solange noch ein Rest besteht. Beispiel mit 65 Cent:
Schacht Nr. | Münzwert | Anzahl der auszugebenden Münzen | Rest | Ausgabe | |
---|---|---|---|---|---|
7 | 200 | 65 / 200 = 0 | 65 | ||
6 | 100 | 65 / 100 = 0 | 65 | ||
5 | 50 | 65 / 50 = 1 | 15 | 1* 50 Cent | |
4 | 20 | 15 / 20 = 0 | 15 | ||
3 | 10 | 15 / 10 = 1 | 5 | 1* 10 Cent | |
2 | 5 | 5 / 5 = 1 | 0 | 1* 5 Cent | -> Fertig |
Rausgeben: 666 Cent
3 * 2 Euro
1 * 50 Cent
1 * 10 Cent
1 * 5 Cent
1 * 1 Cent
Benennung der Variablen
int rest; // Wechselgeld, das noch ausgegeben werden soll
int muenzen; // Anzahl der auszugebenden Münzen
int i; // Index, die jeweilige Schacht Nr.
Berechnungs-Ausdrücke
muenzen = rest / mWert[i]; // Anzahl der Münzen ermitteln
rest = rest % mWert[i]; // Ermitteln des Restes
Entwickeln Sie Methode wechseln(rest:GZ) Ausgabe siehe Abbildung 1. Erstellen Sie ein Struktogramm.
Struktogramm
