EPROG-LU - Aufgabe 3178 (Euroumrechung1)
3178 |
Euro1 |
Euroumrechung1 |
Kategorie: | String |
Klasse: | leicht |
Eingabe: | siehe Spezifikation |
Ausgabe: | siehe Spezifikation |
|
Abzugebende Files: Euro1.txt, Euro1.java, *.java , 10652.txt, 9776.txt |
Kurzbeschreibung:
Eine Rechnung, die Geldbeträge in verschiedenen Währungen addiert und/oder subtrahiert, wird eingelesen. Das Ergebnis dieser Berechnung wird unter Benutzung des Euroumrechnungskurses in einer vorgegebenen Währung ausgegeben.
Allgemeine Hinweise:
-
Sie haben Lösungen (und Spezifikationen) aus der 1. Runde von anderen Studenten erhalten,
die Ihnen Ihre Aufgabe erleichtern sollen. Wählen Sie eine Lösung aus, die Ihnen hinsichtlich Lesbarkeit, Programmierstil,
Korrektheit und Verwendbarkeit am besten erscheint. Verwenden Sie
diese Lösung in Ihrem Programm. Sie können auch die anderen Lösungen einsetzen.
- Merken Sie sich die Lösungsnummer des ausgewählten Beispieles für die Abgabe. Diese Nummer müssen Sie bei der Abgabe angeben. Geben Sie nur jene Lösungsnummer an, die Sie auch wirklich ausgewählt haben.
-
Erstellen Sie für alle Lösungen zu diesem Beispiel (siehe: "Abzugebende Files") ein File mit dem Namen <number>.txt. und schreiben in dieses File ein Review (=Kritik) zu der Lösung. Diese Reviews erhalten dann die TeilnehmerIn von dem/der die Lösung stammt. Beachten Sie das bitte bei der Form Ihrer Kritik.
-
Sie können für die Lösung der gewählten Aufgabe eine oder mehrere Klassen programmieren. Die Klasse Euro1.java muß aber die Methode main enthalten. Weiters müssen alle abgegebenen Klassenfiles in demselben Verzeichnis vorliegen, Pfadangaben sind nicht gestattet.
-
Achten Sie auf die korrekten Konventionen der Groß/Kleinschreibung bei
Klassen und Methoden!
[Wir tun das jetzt auch :-)]
-
Falls Ihre Lösung einen Exit Code zurueckliefert, so
achten Sie darauf, dass dieser den Wert 0 hat.
Bei allen anderen Werten können Probleme bei der Bewertung und in weiterer
Folge unbeabsichtigte Punkteabzüge auftreten.
- Ihre Lösung darf nur genau jene Ausgabedaten liefern, die in der
Spezifikation verlangt werden. Die Ausgaben Ihrer Lösung werden automatisch mit Referenzdaten verglichen; etwaige Abweichungen führen zu Punkteabzügen!
- Testen Sie Ihre Lösung vor der Abgabe mit der mitgelieferten Eingabedatei. Geben Sie Ihre Lösung erst ab, wenn die Ausgaben Ihrer Lösung mit der ebenfalls mitgelieferten Ausgabedatei übereinstimmen! Testen Sie Ihre Lösung auch mit anderen Eingabedaten.
-
Verwenden Sie nur das von uns mitgelieferten Package eprog
für Ihre Ein/Ausgaben. Klassen, die Packages oder Klassen ausserhalb der verwendeten Übungsumgebung (Java2, Standard Edition, Version 1.5.0) verwenden, können von uns
nicht getestet werden und werden daher mit 0 Punkten bewertet!
- Schreiben Sie Ihre Klasse(n) möglichst allgemein und kommentieren
Sie diese gut. Erstellen Sie weiters eine übersichtliche und
verständliche Dokumentation. Damit erhöhen Sie Ihre Chancen,
daß andere Studenten in der nächsten Runde Ihre Lösung
wählen und Ihnen damit zu Zusatzpunkten verhelfen!
Aufgabenstellung:
Lesen Sie einen String ein, der aus Ziffern und den Zeichen "A", "I", "E",
"D", "+", "-" und "=" bestehen darf.
Die Zeichen "A" bis "D" sind die Währungsbezeichnungen; diese sollen immer den
Geldbeträgen nachgestellt sein. Zwischen zwei Geldbeträgen muß immer ein
Operator ("+" oder "-") stehen; die Rechnung wird mit "=" und der Währungsbezeichnung, in der das Ergebnis geliefert werden soll, abgeschlossen.
Als Ausgabe sollen Sie liefern, wie der Betrag in der Zielwährung aus den
jeweiligen Scheinen und Münzen zusammengestellt werden kann, wobei immer
möglichst große Scheine und Münzen gewählt werden müssen; Münzen dürfen erst
genommen werden, wenn man mit Scheinen nicht mehr weiterkommt.
Bei den 3 nationalen Währungen (Schilling, Mark, Lire) sowie beim Euro gibt es folgende Scheine und Münzen:
E = Scheine (5,10,20,50,100,200,500) Münzen (1,2)
A = Scheine (20,50,100,200,500,1000,5000) Münzen (1,5,10)
D = Scheine (10,20,50,100,200,500,1000) Münzen (1,2,5)
I = Scheine (2000,5000,10000,50000,100000,500000) Münzen (100,200,500,1000)
Es gelten folgende Wechselkurse:
1E = 13.7603A
1E = 1936.27I
1E = 1.95583D
Bei Umrechnungen zwischen verschiedenen nationalen Währungseinheiten ist zunächst in Euro und bei Bedarf anschließend in die gewünschte nationale Währungseinheit umzurechnen.
Beispiel der Umrechnung:
von 100 DM in Schilling: 100 DM : 1,95583 DM/Euro = 51,1291881196... Euro.
Daraufhin wird der Euro-Betrag auf genau drei Nachkommastellen gerundet und mit dem Umrechnungskurs Schilling/Euro multipliziert: 51,129 Euro x 13,7603 A/Euro = 703,5503787.
Die Additionen/Subtraktionen von Beträgen erfolgt in Euro, der Gesamtbetrag musß größer als 0 sein.
Der Endbetrag in der Zielwährung ist auf den nächstliegenden Pfennig, Groschen oder Cent, d. h. auf zwei Stellen hinter dem Komma auf- oder abzurunden. Dabei wird nach der sog. kaufmännischen Rundung vorgegangen: bis 4 wird abgerundet, ab 5 wird aufgerundet.
Lirebeträge werden auf 100 Lire auf- bzw. abgerundet.
Eingabedaten:
Lesen Sie den String ein, der die Rechnung enthält. Dieser darf nur aus den
oben genannten Zeichen (Grossbuchstaben) bestehen und muß eine gültigen Rechnung (z.B. keine
zwei Operatoren hintereinander) enthalten.
Es muß mindestens ein Betrag und maximal 5 Beträge in der Rechnung vorkommen,
die jeweils nicht größer als 50000 (in der jeweiligen Währung) sein dürfen.
Ausgabedaten:
Bei korrekten Eingabedaten soll Ihr Programm die Aufteilung des Betrages in
Scheine, Münzen und einen Restanteil liefern. Geben Sie dazu ein "S" aus, danach in nach Betrag
absteigender Reihefolge den Nennwert des Scheines und die Anzahl der notwendigen Scheine dieser Größe.
Ebenso verfahren Sie mit den Münzen: Geben Sie ein "M" aus und danach Nennwert und Anzahl der benötigten Münzen.
Euro, Schilling und Markbeträge kleiner als 1 bzw. Lirebeträge kleiner als 100 werden nicht mehr weiter aufgeteilt. Falls dieser Betrag kleiner als 1 ist (ausser bei Lire), so multiplizieren sie diesen noch mit 100 und schneiden die Nachkommastellen ab. Geben Sie zuerst ein "R"und dann diesen Restbetrag aus.
Die einzelnen Ausgaben sind durch Leerzeichen zu trennen.
Wenn überhaupt keine Scheine bzw. Münzen notwendig sind, so geben Sie auch
kein "S" bzw. "M" aus. Wenn kein Restbetrag vorhanden ist geben Sie auch kein "R" aus.
Trennen Sie die einzelnen Teile der Ausgabe durch Leerzeichen und geben Sie am
Ende einen Zeilenvorschub aus.
Fehlerbehandlung:
Wenn der Eingabestring nicht den Bedingungen genügt, so soll Ihr Programm die Fehlermeldung "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.
Beispiele:
Eingabedaten
|
3543A=A
5A+40000I+370D=D
|
Ausgabedaten
|
S 1000 3 500 1 20 2 M 1 3
S 200 2 10 1 M 1 1 R 11
|
Testen:
Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und
müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie
bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung
können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei
erzeugen:
java Euro1 < Euro1.i1 > Euro1.out1
Das erzeugte File Euro1.out1 können Sie dann mit dem mitgelieferten Outputfile Euro1.o1 vergleichen.