Beispiel Angabe

Kürzel:Complex2 Runde:3
Name:Rechnen mit komplexen Zahlen Evaluieren als:Java
Kette:Upn-Rechner Eingabe:Double, String
Kategorie:Rechner Ausgabe:Double

Mitgelieferte Datei(en):
Abzugebende Datei(en): Complex.java, Calculator.java
Optional abzugebende Datei(en):
Ausführbar: Calculator

Die Klasse Calculator ist zu erstellen und soll eine ausführbare Klasse sein und muss daher die public static void main(String args[]) Methode beinhalten.

Ihr Programm wird automatisch auf Korrektheit überprüft. Die Überprüfung erfolgt durch die Ausführung der als ausführbar bezeichneten Klasse (Calculator).

Kurzbeschreibung:

Beliebig viele komplexe Zahlen sollen addiert oder subtrahiert oder multipliziert werden.

Allgemeine Hinweise:

Spezifikationsspezifische Hinweise:

Achten Sie bei diesem Beispiel besonders auf den richtigen Entwurf Ihrer Klassen und den verlangten Zugriffschutz der Datenelemente (Themen: Unveränderliche Klassen, Datenkapselung, eigenen Konstruktor schreiben).

Voraussetzungen: Klassen, private Datenelemente, Methoden mit Rückgabewert, Datenkapselung, Konstruktoren (wird spätestens in Lektion5 der Vorlesung behandelt).

Hinweis zum Einlesen/Ausgeben von Daten: Ihr Programm soll von der Standardeingabe lesen und auf der Standardausgabe ausgeben. Verwenden Sie zum Einlesen/Ausgeben von Daten die selben Methoden wie in Beispielrunde 1.

Rundungsfehler: Bei der double-Arithmetik können Rundungsfehler auftreten. Dabei kann es sein, dass das Ergebnis das von Ihrem Programm ausgegeben wird, numerisch (um einen relativ kleinen Wert) von den Sollausgaben der mitgelieferten Ein-/Ausgabepaare abweicht. Diese Abweichung aufgrund von Rundungsfehlern wird von unserem autom. Abgabesystem toleriert, die Bewertung wird daher nicht beeinflusst.

Aufgabenstellung:

Eine komplexe Zahl soll durch eine unveränderliche Klasse namens Complex dargestellt werden.

Diese Klasse besitzt 2 Datenelemente vom Typ double die den Realteil und den Imaginärteil der komplexen Zahl repräsentieren. Diese Datenfelder werden einmal gesetzt und sollen im Programmverlauf nicht mehr verändert werden können. Benutzen Sie hier die entsprechenden Modifier bei der Definition der Datenelemente.

Diese Klasse soll die folgenden (öffentlichen) Methoden besitzen:

Der Konstruktor hat 2 Parameter vom Typ double, den Realteil und den Imaginärteil der zu erzeugenden Zahl.

Zuerst wird eine komplexe Zahl als Startwert eingelesen. Danach werden abwechselnd ein Operator und eine komplexe Zahl eingelesen und die angeforderte Rechenopertion durchgeführt. Die Operatorpriorität (Punktrechnung vor Strichrechnung) soll nicht berücksichtigt werden. Sobald der nächste Operator und Operand eingelesen wurde wird sofort ausgewertet und das Ergebnis für eine ev. nachfolgende Operation benutzt (siehe auch Beispiele unten).

Eingabedaten:

Eine komplexe Zahl, dann abwechselnd Operator (+,-) und komplexe Zahl bis die eingabe beendet wird. Eine Zahl besteht aus 2 double Werten die nacheinander eingelesen werden.

Ausgabedaten:

Das Ergebnis der Rechenoperationen. Wird nur eine komplexe Zahl (2 Werte) eingelesen, soll diese das Ergebnis sein.

Fehlerbehandlung:

Wenn die Eingabe gleich zu Beginn abgebrochen wird, soll die komplexe Zahl mit Realteil und Imaginärteil gleich 0 ausgegeben werden. Wenn ein anderer Fehler auftritt, soll FALSCHE EINGABE ausgegeben werden.

Testen:


In
1.3 2.5
Out
1.3 2.5
Beschreibung keine rechenoperationen


In
1.0 2.1 + 1.1 2.2 -
Out
FALSCHE EINGABE
Beschreibung letzter operand fehlt


In
1.5 2.3 + 0.7 1.2 - 1.0 0.0
Out
1.2 3.5
Beschreibung Addition und Subtraktion


In
1.1 2 + 3 4 * 1 2
Out
-7.9 14.2
Beschreibung Addition und Multiplikation


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 Calculator < Complex2.i1 > Complex2.out1

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