/* Autor: Bernhard PREIS MatrNr: 0200328 Beschreibung: Eine Geldbetrag soll eingelesen werden und auf Scheine und Münzen aufgeteilt werden. */ import eprog.*; public class CurrencyConverter extends EprogIO{ public boolean hasItems=false; public int[] itemStock; public String outputPrefix; public int[] numItems; // Konstruktor; setzt "Geldvorrat" und Prefix für die Ausgabe public CurrencyConverter(int[] stock, String prefix){ outputPrefix = prefix; itemStock = stock; numItems = new int[itemStock.length]; } // berechnet die Anzahl der verschiedenen Scheine/Münzen // und gibt den Betrag zurück, der nicht abgedeckt werden kann public int convert(int value){ // zum überprüfen, ob etwas ausgegeben werden muß hasItems=false; // Berechnung; der Zähler läuft rückwärts, um die // Sortierung zu gewährleisten. Die Berechnung basiert auf // ganzzahligen Divisionen (Anzahl) und Modulo (Rest) for(int i=itemStock.length-1;i>=0;i--){ numItems[i]=value/itemStock[i]; value%=itemStock[i]; if(numItems[i]>0) hasItems=true; } return value; } // gibt die Anzahl und Nennwerte gemäß Spezifiaktion aus public void output(){ if(!hasItems) return; print(outputPrefix); for(int i=itemStock.length-1;i>=0;i--){ if(numItems[i]>0) print(" "+itemStock[i]+" "+numItems[i]); } } }