M
Max65
Gast
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!
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!