4107 |
bruch |
Bruchrechnen |
Kategorie: | Mathematik |
Klasse: | leicht |
Eingabe: | Siehe Spezifikation |
Ausgabe: | Siehe Spezifikation |
|
Abzugebende Files: bruch.txt, Main.java, bruch/*.java , 4418.txt, 4685.txt |
Kurzbeschreibung:
Es sollen 2 bis 4 (inklusive) Bruchzahlen sowie die Grundrechnungsart eingelesen und das Ergebnis ausgegeben werden.
Allgemeine Hinweise:
-
Das Beispiel dieser Runde ist objektorientiert und als package zu lösen. Nachdem Sie das Programm mittels Dialogprogramm abgegeben haben, gehen Sie zu einem Tutor. Der Tutor überprüft, ob Sie Ihr Programm spezifikationsgemäß programmiert haben.
-
Unmittelbar nach der erfolgreichen Abgabe am Dialogprogramm können sie bereits die nächste Runde abholen.
-
Sie haben Lösungen (und Spezifikationen) aus der 3. Runde von anderen Studenten erhalten. Testen Sie alle mitgelieferten Lösungen und wählen Sie eine Lösung aus, die Ihnen hinsichtlich Lesbarkeit, Programmierstil,
Korrektheit und Verwendbarkeit am besten erscheint.
- 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 Main.java muß aber die Methode main enthalten. Weiters müssen alle anderen abgegebenen Klassenfiles in Verzeichnis bruch vorliegen, Pfadangaben sind nicht gestattet.
-
Achten Sie auf die korrekten Konventionen der Groß/Kleinschreibung bei
Klassen und Methoden!
-
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.3.1_1) 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:
Es sollen mindestens 2 aber maximal 4
Bruchzahlen eingelesen werden. Diese dürfen sowohl im Zähler als auch
im Nenner nur ganze Zahlen {..., -2, -1, 0, 1, 2, ...} haben. Es
sollen aber auch Doppelbrüche eingegeben werden können. Das heißt auch
ein Bruch, der im Zähler und/oder im Nenner eine Bruchzahl aufweist,
darf eingelesen werden. Weitere Verschachtelungen sind nicht
erlaubt. Es sollen auch nur Brüche eingegeben werden keine ganzen
Zahlen. Ebenso sollen keine gemischte Zahlen (dh. ganze Zahl mit
Bruch) eingegeben werden.
Weiters soll die Grundrechnungsart {+, -, *, /} eingelesen werden, mit der operiert werden soll. Wurde ein +
eingelesen, so sollen alle eingegebenen Brüche addiert werden. Wurde
ein - eingegeben, so sollen vom ersten Bruch alle anderen subtrahiert
werden. Wurde ein * eingegeben, so sollen alle Brüche multipliziert
werden. Wurde ein / eingegeben, so müssen genau 2 Brüche eingelesen
worden sein, wobei der erste der Dividend und der zweite der Divisor
ist.
Das Ergebnis der Rechenoperation soll wieder als Bruch
ausgegeben werden. Dabei ist darauf zu achten, dass der Bruch gekürzt
ist. Das bedeutet: Zähler und Nenner können nicht mehr durch ein und
die selbe Zahl ganzzahlig dividiert werden. Es dürfen auch keine
Doppelbrüche ausgegeben werden. Implementieren Sie die Klasse Bruch.
Eingabedaten:
Zunächst sollen zwei bis vier Brüche bzw. Doppelbrüche eingelesen werden.
Die Brüche sollen durch Leerzeichen getrennt eingegeben werden. Dabei
soll der Zähler durch einen Schrägstrich vom Nenner getrennt
sein. (Beispiel: 2/3). Bei Doppelbrüchen soll der Hauptbruchstrich
durch zwei aufeinanderfolgende Bruchstriche symbolisiert
werden. (Beispiel: 1/2//3/4) Die Zahlen im Zähler bzw. im Nenner
sollen im Bereich zwischen (exklusive -100 und + 100 liegen). Nach
der Eingabe der Brüche folgt ein Leerzeichen und dann die
Grundrechnungsart. Für die Addition soll das Symbol "+", für die
Subtraktion "-", für die Multiplikation "*" und für die Division "/"
verwendet werden. Tritt im Nenner eines Bruches die Zahl "0" auf so
soll "NULLDIVISION" ausgegeben werden. Hat der zweite Bruch bei der
Eingabe einer Division den Wert "0" so soll ebenfalls "NULLDIVISION"
ausgegeben werden.
Die Eingabe wird immer durch einen der 4 Operatoren {+,-,*,/} abgeschlossen.
Ausgabedaten:
Das Ergebnis der Operation soll wieder als Bruch, gefolgt von einem Zeilenvorschub, ausgegeben werden. Dabei sollen keine Doppelbrüche ausgegeben werden. Ist das Ergebnis negativ, so soll das Vorzeichen vor dem Zähler stehen. Unechte Brüche sollen nicht in ganze Zahlen und echte Brüche aufgeteilt werden. Ist das Ergebnis 0 soll statt eines Bruches nur "0" ausgegeben werden.
Fehlerbehandlung:
Alle Datensätze sollen immer bis zum Ende eingelesen werden.
Generell wird bei fehlerhaften Eingabedatensätzen nur eine einzige Fehlermeldung erzeugt, weitere Berechnungen werden nicht mehr durchgeführt.
Wenn die Eingabe nicht den Bedingungen genügt, so soll Ihr Programm die Fehlermeldung "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.
Beispiele:
Eingabedaten
|
1/2//3/0 1/1 +
14/5 3/7 5/3//3/7 3/2 *
150/3 1/2 + |
Ausgabedaten
|
NULLDIVISION
7/1
FALSCHE EINGABE |
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 Main < bruch.i1 > bruch.out1
Das erzeugte File bruch.out1 können Sie dann mit dem mitgelieferten Outp
utfile bruch.o1 vergleichen.