// author: klaffenboeck patrick // matr.-nr: 0125335 // bsp.-nr: 1132 // beschreibung: lieszt einen geldbetrag und ein waehrungssymbol ein // - " - : und gibt entsprechend viele scheine undmuenzen aus. // for better readability try "sed '/ \/\//d' ...." ;-) import eprog.EprogIO; public class money2 extends eprog.EprogIO { // in den arrays werden die werte der scheine und muenzen gespeichert // der erste wert gibt die anzahl der scheine bzw. muenzen an static short c_scheine[] = { 6, 800, 500, 100, 50, 10, 2 }; static byte c_muenzen[] = { 2, 5, 1 }; static short d_scheine[] = { 5, 400, 100, 50, 20, 4 }; static byte d_muenzen[] = { 4, 10, 5, 2, 1 }; public static void main( String[] args ) { String eingabe; int betrag = 0; eingabe = readWord(); // mit substring() den buchstaben wegschneiden und den rest an parseInt() geben // um den betrag herauszukriegen try { betrag = Integer.parseInt(eingabe.substring(0, eingabe.length() - 1)); } catch (NumberFormatException e) {} // der betrag muss groeszer als 0 und kleiner als zehn millionen sein und // mit 'C' oder 'D' aufhoeren if ((betrag > 0) & (betrag <= 10000000)) { if (eingabe.endsWith("C")) println(berechnen(betrag, c_scheine, c_muenzen)); else if (eingabe.endsWith("D")) println(berechnen(betrag, d_scheine, d_muenzen)); else println("FALSCHE EINGABE"); } else println("FALSCHE EINGABE"); } // end int main() /* * diese methode uebernimmt einen geldbetrag und die scheine und * muenzen der jeweiligen waehrung und berechnet dann wieviel von den * jeweiligen scheinen und muenzen ausgegeben werden muessen. das * ergebniss ist ein string der an main() zurueckgegeben wird. */ static String berechnen( int betrag, short scheine[], byte muenzen[] ) { int zaehler; int betragNeu = 0; boolean nurMuenzen = true; String ausgabe = ""; // wenn der kleinste schein zu klein ist brauchen wir keine scheine if (betrag >= scheine[scheine[0]]) { nurMuenzen = false; ausgabe = ausgabe.concat("S"); // alle scheine durchgehen und schauen welche ausgegeben werden muessen for (zaehler = 1; zaehler <= scheine[0]; zaehler++) { betragNeu = betrag / scheine[zaehler]; if (betragNeu != 0) { ausgabe = ausgabe.concat(" " + Short.toString(scheine[zaehler])); ausgabe = ausgabe.concat(" " + Integer.toString(betragNeu)); } // "betrag" auf den geldbetrag setzten, der noch nicht ausgegeben wurde betrag %= scheine[zaehler]; } } // nur ausfuehren, wenn noch geld zum ausgeben da ist if (betrag != 0) { // vorher wurden scheine ausgegeben also brauchen wir ein trennendes leerzeichen if (nurMuenzen == false) ausgabe = ausgabe.concat(" "); ausgabe = ausgabe.concat("M"); // alle muenzen durchgehen und schauen welche ausgegeben werden muessen for (zaehler = 1; zaehler <= muenzen[0]; zaehler++) { betragNeu = betrag / muenzen[zaehler]; if (betragNeu != 0) { ausgabe = ausgabe.concat(" " + Short.toString(muenzen[zaehler])); ausgabe = ausgabe.concat(" " + Integer.toString(betragNeu)); } // "betrag" auf den geldbetrag setzten, der noch nicht ausgegeben wurde betrag %= muenzen[zaehler]; } } return ausgabe; } // end String ausgeben() } // end class test