1176 laenfl Operation mit Laengen, Volumina
Kategorie:MATHEMATIK
Klasse:mittel
Eingabe:siehe Spez
Ausgabe:siehe Spez
Abzugebende Files: laenfl.txt, laenfl.java

Kurzbeschreibung:

Zwei Größen, die Längen, Flächen oder Volumina sein können, sowie eine Operation werden eingelesen; das Ergebnis der Operation wird ermittelt.

Allgemeine Hinweise:

Aufgabenstellung:

Lesen Sie zwei Paare aus jeweils einer Zahl und einem String ein. In jedem String steht die Maßeinheit für die zuvor eingegebene Zahl. Folgende Maßeinheiten sind erlaubt:

Längenmaße (Dimension 1): cm dm m
Flächenmaße (Dimension 2): cm2 dm2 m2
Raummaße (Dimension 3): cm3 dm3 m3

Sicherheitshalber die Umrechnungsfaktoren:

1 m = 10 dm = 100 cm
1 m2 = 100 dm2 = 10000 cm2
1 m3 = 1000 dm3 = 1000000 cm3

Es ist empfehlenswert, die Eingabewerte in m, m2 bzw. m3 umzurechnen, da auch die Ausgabe in diesen Grundeinheiten erfolgen muß.

Weiters soll eine der folgenden Operationen eingelesen werden: + - * / Hierbei werden bei + und - Werte gleicher Dimension addiert bzw. subtrahiert.
Werte mit verschiedenen Dimensionen sind bei diesen Operationen nicht erlaubt.
Beispiel: 1 m2 50 dm2 + liefert 1.500 m2

Die Operation * multipliziert Werte, die auch verschiedene Dimension haben können, wobei die Dimensionen addiert werden. Diese neue Dimension darf nicht höher als 3 sein. Beispiel: 1 m2 5 dm * liefert 0.500 m3

Mit / werden zwei Werte dividiert, wobei der erste Wert eine höhere Dimension haben muß als der zweite. Die Dimensionen werden in diesem Fall subtrahiert.
Beispiel: 10 m3 2 m / liefert 5.000 m2

Eingabedaten:

Lesen Sie die die erste Zahl (Typ Float ,), die erste Maßeinheit (String), die zweite Zahl, die zweite Maßeinheit und die Operation (String) in dieser Reihenfolge ein. Die Zahlen müssen >= 0 sein.

Die Maßeinheiten müssen aus der obenstehenden Tabelle stammen und in Kleinbuchstaben angegeben werden.

Die Operation muß eines der Zeichen +, -, * oder / sein.

Die oben genannten Bedingungen für die Dimensionen der Eingabewerte (abhängig von der Operation) müssen erfüllt sein.

Ausgabedaten:

Bei korrekten Eingabedaten soll Ihr Programm das Ergebnis der Operation (umgerechnet in m, m2 bzw. m3) als Float ,-Zahl liefern. Weiters ist die Maßeinheit des Resultates (m, m2 bzw. m3) auszugeben (m als Kleinbuchstabe!).

Trennen Sie die beiden Teile der Ausgabe durch ein Leerzeichen und geben Sie am Ende einen Zeilenvorschub aus.

Fehlerbehandlung:

Sämtliche Eingabedatensätze sind immer vollständig einzulesen. Generell wird bei fehlerhaften Eingabedatensätzen nur eine einzige Fehlermeldung erzeugt, weitere Berechnungen werden nicht mehr durchgeführt.

Enthält der Eingabedatensatz einen ungültigen Datentyp, so soll einmal das Zeichen "?", gefolgt von einem Zeilenvorschub, ausgegeben werden.

Sind die Datentypen bei allen Eingaben richtig, die eingegebenen Daten aber inhaltlich nicht korrekt oder erfüllen nicht die Bedingungen, so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.

Beispiele:

Eingabedaten
1 m 5 dm +

1 m 5 m2 -

Ausgabedaten
1.500 m

FALSCHE EINGABE

Bemerkung: 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 laenfl < laenfl.i1 > laenfl.out1

Das erzeugte File laenfl.out1 können Sie dann mit dem mitgelieferten Outputfile laenfl.o1 vergleichen.