# Bitte um Hilfe!



## Max65 (5. Jan 2004)

Hallo!

Ich hoffe einer von euch Experte kann mir bei folgender Aufgabenstellung einige Denkanstöße geben:

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. 


Danke bereits im voraus!


----------



## derHai (5. Jan 2004)

Hallo Max65, 
ich würde dir ja gerne helfen - und kann dir auf genauere Nachfrage auch ein paar Denkanstöße geben. Jedoch ist die Stringverarbeitung bei der Eingabe von mathematischen Thermen überaus aufwendig.... und vor allem: Seeeehhhr langwirig zu implementieren... könntest du mir vieleicht sagen, woher diese Aufgabe stammt?

mfg Merlin


----------



## Math55 (5. Jan 2004)

hallo, also meiner meinung nach bietet java keine unterstützung für komplexe zahlen. da müsstest du was selber coden. aber wie schon gesagt, kurz wird das nicht :-(. sollt ihr das echt in der schule machen?
aber vielleicht ists ja doch anders gemeint?
gruß math55


----------

