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:

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.