4102 Komplex Komplexe Zahlen
Kategorie:Mathematik
Klasse:leicht
Eingabe:Siehe Spezifikation
Ausgabe:Siehe Spezifikation
Abzugebende Files: Komplex.txt, Main.java, Komplex/*.java , 1066.txt, 1161.txt

Kurzbeschreibung:

Schreiben Sie eine Klasse Complex mit den Attributen Double re und Double im für den Real- und Imaginärteil. Außerdem sollen Methoden für grundlegende Rechenarten zur Verfügung gestellt werden.

Allgemeine Hinweise:

Aufgabenstellung:

Ein String, der eine Rechnung (für Mathematiker: einen Term) mit komplexen Zahlen enthält, soll eingelesen und das Ergebnis der Berechnung ermittelt werden. Schreiben Sie eine Klasse Complex mit den Attributen Double re und Double im für den Real- und Imaginärteil. Die Klasse Complex soll von Number (aus der Package java.lang) erben.

Schreiben Sie die Routinen Complex plus(Complex other) und Complex times(Complex other). Die Addition von zwei komplexen Zahlen a und b ist definiert durch Re(a+b)=Re(a)+Re(b) und Im(a+b)=Im(a)+Im(b), die Multiplikation durch Re(a*b)=Re(a)*Re(b)-Im(a)*Im(b) und Im(a*b)=Re(a)*Im(b)+Im(a)*Re(b).

Der Betrag einer Komplexen Zahl ist ihr pythagoreischer Abstand zum Nullpunkt: |a|=(Re(a)2+Im(a)2)1/2. Implementieren Sie die Routine Double abs().

Schreiben Sie eine Routine die zwei komplexe Zahlen miteinander vergleicht. Die Ordnung zweier komplexen Zahlen sei definiert durch a<b gdw. |a|<|b|. Desweitern gilt a=b gdw. |a|=|b| sowie a>b gdw. |a|>|b|

Eingabedaten:

Lesen Sie einen String ein, der aus folgenden Zeichen bestehen darf: Ziffern, Operatoren "+*<>=", dem negativen Vorzeichen "-", den Klammerzeichen "()", weiters die Zeichen "i;.". Dieser String muß einen gültigen mathematischen Term enthalten (z.B. Klammersetzung) und darf nur einen Operator enthalten.

Komplexe Zahlen können auf folgende Weise eingegeben werden: entweder in der Form (a+bi) (bzw. (a-bi), (-a+bi) etc.) oder (a;b) (bzw. (a;-b),(-a;b) etc.). Vor dem "i" muß immer eine Ziffer stehen (z.B. "1i"), es dürfen weder Real noch Imaginärteil einer komplexen Zahl bei der Eingabe fehlen.

Die eingelesenen Zahlenwerte (Real- und Imaginärteil) müssen im Bereich [-100,100] (inkl.) liegen.

Ausgabedaten:

Bei korrekten Eingabesätzen soll Ihr Programm das Resultat der Berechnung in der Form "a+bi" bzw. "a-bi" ausgeben, wobei folgendes zu beachten ist:

a und b sind als Gleitkommazahlen mit 3 Nachkommastellen auszugeben, vor dem "i" muß immer eine Ziffer stehen. Weder Real noch Imaginärteil dürfen fehlen. Vor dem Realteil kann gegebenenfalls noch ein negatives Vorzeichen stehen. Die Ausgabe soll keine Leerzeichen enthalten.

Bei Vergleichsoperationen geben Sie das Ergebnis entweder mit "TRUE" oder mit "FALSE" aus.

Schließen Sie die Ausgabe mit einem Zeilenvorschub ab.

Fehlerbehandlung:

Generell wird bei fehlerhaften Eingabedatensätzen nur eine einzige Fehlermeldung erzeugt, weitere Berechnungen werden nicht mehr durchgeführt.

Wenn der Eingabestring nicht den Bedingungen genügt, so soll Ihr Programm die Fehlermeldung "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.

Beispiele:

Eingabedaten
(0-1i)<(1;-1)

(1+2i)+(-3+5i)

Ausgabedaten
TRUE

-2.000+7.000i


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 < Komplex.i1 > Komplex.out1

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