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).
System.exit(1)
-artige Unterbrechungen in Ihrem Programm.
Am besten verzichten Sie völlig auf System.exit() Aufrufe da dadurch der
laufende JVM gewaltsam terminiert wird.Scanner
zum Einlesen von Daten.System.out.print
und
System.out.println
benutzen. Zum Erzeugen formatierter Ausgaben können
Sie auch System.out.printf
benutzen (wird im Allgemeinen aber nicht benötigt).
Beachten Sie, dass wir bei der Beurteilung einen US-amerikanischen Region- und
Spracheinstellungssatz (locale) f¨r die Beurteilung benutzen.
Das bedeutet, dass wir für die Darstellung von double
-Werten auch bei
der Ein-/Ausgabe immer den Dezimalpunkt (und nicht Beistrich) benutzen
(z.B. 3.14159 und nicht 3,14159). Falls Sie auf Ihrem Rechner eine andere Einstellung haben,
können Sie zum Testen zuhause auch die Darstellung mit Beistrich benutzen (ist aber nicht
konsistent mit den mitgelieferten Ein-/Ausgabe-Paaren) oder beim Aufruf von Java auch folgenden Befehl
benutzen:
java -Duser.language=en -Duser.country=US Calculator
double
-Werten eine Darstellung mit Dezimalpunkt erwartet wird.
Wenden Sie sich bei Problemen mit den Ein-/Ausgabefunktionen bitte an die Tutoren im Labor.
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.
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:
public Complex add(Complex c)
, die die Zahl c dazuaddiert und als neues Objekt zurückgibt.
public Complex sub(Complex c)
,
die die Zahl c subtrahiert und als neues Objekt zurückgibt.
public Complex mul(Complex c)
, die die komplexe Zahl mit einer komplexen Zahl c multipliziert und das Produkt als neues Objekt zurückgibt. Beachten Sie die Rechenregeln für komplexe Zahlen. Wenn 2 komplexe Zahlen in der Darstellung (realteil;imaginärteil) multipliziert werden, so ist das Produkt (r1;i1)*(r2;i2) = (r1*r2-i1*i2;r1*i2+i1*r2). Siehe auch den Wikipediaeintrag zum Thema Komplexe Zahl.
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).
|
||||||
|
||||||
|
||||||
|