// Autor: Roland Kammerer // MatNr: 0125555 // BspNr: 1130 // Beschreibung: Geldberechnung //reformated with idea (www.intellij.com) by heder import eprog.EprogException; import eprog.EprogIO; public class money1 extends EprogIO { public static void main(String[] args) throws EprogException { // variablendeklaration int rest = 0,grbetrag = 0,ausgabezahl = 0,laenge = 0,i; long rest1 = 0; String eingabe = "",zsyst = "",ausgabe = "",reststr = ""; char zeichen; boolean kill = true; // einlesen der eingabe eingabe = readWord(); // fehlerabfragen if ((eingabe.endsWith("A"))) { kill = false; zsyst = "A"; } if ((eingabe.endsWith("B"))) { kill = false; zsyst = "B"; } // überprüfung und extrahieren der integerzahl laenge = eingabe.length(); loop: for (i = 0; i < laenge - 1; i++) { zeichen = eingabe.charAt(i); if (Character.isDigit(zeichen)) { reststr += zeichen; } else { kill = true; break loop; } } // umwandlung des reststings in eine int zahl if (reststr == "") // nötig um bei 0..9 gefolgt von 'A' oder 'B', um keinen parseInt-fehler auszulösen { kill = true; } else { rest1 = Long.parseLong(reststr); if (rest1 <= 2147483647) (rest = Integer.parseInt(reststr)); } if ((rest > 10000000) || (rest == 0)) (kill = true); // wertebereich der int-varialblen (laut spec), negative zahlen fallen so und so weg, da ihr 'char' kein digit ist (siehe oben); WICHTIG: falls die rest1 nicht in rest passt, dann kommt es auch zu keinem fehler, da rest mit 0 initialisiert wurde, und so sich kill=true ergibt. //SCHEIN-BERECHNUNG SYSTEM A if (rest >= 5) ausgabe = "S"; while ((rest >= 5) && (zsyst == "A")) { if (rest >= 500) (grbetrag = 500); if ((rest >= 200 && rest < 500)) (grbetrag = 200); if ((rest >= 100 && rest < 200)) (grbetrag = 100); if ((rest >= 50 && rest < 100)) (grbetrag = 50); if ((rest >= 20 && rest < 50)) (grbetrag = 20); if ((rest >= 10 && rest < 20)) (grbetrag = 10); if ((rest >= 5 && rest < 10)) (grbetrag = 5); ausgabezahl = rest / grbetrag; ausgabe += " " + grbetrag + " " + ausgabezahl; rest -= (grbetrag * ausgabezahl); } //MUENZ-BERECHNUNG SYSTEM A if ((zsyst == "A") && (rest != 0)) { if ((rest < 5) && (ausgabe != "")) (ausgabe += " M"); else ausgabe = "M"; } while ((rest < 5) && (rest != 0) && (zsyst == "A")) { if ((rest <= 4) && (rest >= 2)) (grbetrag = 2); if (rest == 1) (grbetrag = 1); ausgabezahl = rest / grbetrag; ausgabe += " " + grbetrag + " " + ausgabezahl; rest -= (grbetrag * ausgabezahl); } ////////////////////////////////////////////////////////////// //SCHEIN-BERECHNUNG SYSTEM B if (rest >= 5) ausgabe = "S"; while ((rest >= 5) && (zsyst == "B")) { if (rest >= 400) (grbetrag = 400); if ((rest >= 100 && rest < 400)) (grbetrag = 100); if ((rest >= 50 && rest < 100)) (grbetrag = 50); if ((rest >= 20 && rest < 50)) (grbetrag = 20); if ((rest >= 5 && rest < 20)) (grbetrag = 5); ausgabezahl = rest / grbetrag; ausgabe += " " + grbetrag + " " + ausgabezahl; rest -= (grbetrag * ausgabezahl); } //MUENZ-BERECHNUNG SYSTEM B if ((zsyst == "B") && (rest != 0)) { if ((rest < 5) && (ausgabe != "")) (ausgabe += " M"); else ausgabe = "M"; } while ((rest < 5) && (rest != 0) && (zsyst == "B")) { if ((rest <= 4) && (rest >= 2)) (grbetrag = 2); if (rest == 1) (grbetrag = 1); ausgabezahl = rest / grbetrag; ausgabe += " " + grbetrag + " " + ausgabezahl; rest -= (grbetrag * ausgabezahl); } if (!kill) println(ausgabe); else println("FALSCHE EINGABE"); } }