Beispiel Angabe
Kürzel: | Complex1 |
Runde: | 2 |
Name: | Rechnen mit komplexen Zahlen |
Evaluieren als: | Java |
Kette: | Upn-Rechner |
Eingabe: | Integer, String |
Kategorie: | Rechner |
Ausgabe: | Integer |
Mitgelieferte Datei(en):
Abzugebende Datei(en): Calculator.java, Complex.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 werden. Dabei soll die Klasse Calculator
eine zu erstellende Klasse Complex
benutzen.
Allgemeine Hinweise:
-
Die Groß- und Kleinschreibung ist relevant! Beachten Sie ganz genau die Angaben zu den
Funktions- und Dateinamen.
-
Die abzugebende Datei(en) müssen für die Abgabe ausnahmslos archiviert werden.
Das Format der Archiv muss Zip sein, Programme wie WinZip, WinRar, jar (kommt mit der Java JDK Distribution)
können Sie für die Archivierung verwenden. Dateiendung des Archivs muss .zip oder .jar sein.
jar syntax:
-
Archivierung: jar Mcvf archiv_name.jar * (oder einzelne Dateien statt *)
-
Inhalte anzeigen: jar tf archiv_name.jar
-
Extrahieren: jar xvf archiv_name.jar
-
Ihr Programm darf nur genau jene Ausgabedaten liefern, die in der Spezifikation
verlangt werden. Die Ausgaben Ihres Programms werden automatisch mit
Referenzdaten verglichen; etwaige Abweichungen führen zu Punkteabzügen!
-
Testen Sie Ihr Programm vor der Abgabe mit den mitgelieferten Eingabedateien.
Geben Sie Ihre Lösung erst ab, wenn die Ausgaben Ihres Programms mit der
ebenfalls mitgelieferten Ausgabedatei übereinstimmen! Testen Sie Ihr
Programm auch mit anderen Eingabedaten.
-
Ihr Programm muss immer den Prozess Return Code 0 liefern. Verwenden Sie daher
keine
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.
-
Verwenden Sie die Klasse
Scanner
zum Einlesen von Daten.
Für die Ausgabe können Sie die Methoden 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
Sie werden sehen, dass dann während des Ablaufs des Programmes bei der Eingabe
von double
-Werten eine Darstellung mit Dezimalpunkt erwartet wird.
Wenden Sie sich bei Problemen mit den Ein-/Ausgabefunktionen bitte an die Tutoren im Labor.
-
Programme, die Packages oder Klassen außerhalb der verwendeten Übungsumgebung
(J2SE Development Kit (JDK) 5.0)
verwenden, können von uns nicht getestet und beurteilt werden!
-
Schreiben Sie Ihr Programm möglichst allgemein und kommentieren Sie es
gut. Die Kommentare im Programm gelten als Dokumentation.
Die Dokumentation Ihrer Programme wird ebenfalls beurteilt. Es ist
erlaubt/erwünscht die Kommentare javadoc-konform zu erstellen.
Spezifikationsspezifische Hinweise:
Voraussetzungen: Klassen, Datenelemente, Methoden ohne Rückgabewert (wird spätestens in Lektion4 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.
Aufgabenstellung:
Eine komplexe Zahl soll durch eine Klasse
namens Complex
dargestellt werden.
Diese Klasse besitzt 2 Datenelemente vom Typ int
die den Realteil und den Imaginärteil der komplexen Zahl repräsentieren (Wir beschränken uns zwecks Vereinfachung in diesem Beispiel auf die Untermenge der kompexen Zahlen mit ganzzahligem Realteil und Imaginärteil).
Diese Klasse soll folgende (öffentlichen) Methoden besitzen:
- public void add(Complex c), die die Zahl c dazuaddiert
- public void sub(Complex c),
die die Zahl c subtrahiert
Wenn die erste Eingabe '-' war, werden
die Zahlen von der ersten eingelesenen komplexen Zahl subtrahiert, wenn ein '+' eingelesen wurde, werden alle komplexen Zahlen addiert.
Eingabedaten:
Die erste Eingabe ist entweder ein '+' oder ein '-'. Danach folgen abwechselnd Realteil und
Imaginärteil vom Typ Integer.
Ausgabedaten:
Das Ergebnis der Rechnung. Wird nur eine komplexe Zahl (2 Werte) eingelesen, soll diese das Ergebnis sein. Die komplexe Zahl wird wie folgt ausgegeben: Realteil Leerzeichen Imaginärteil
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 2 3 4 5 6
|
Out |
-7 -8
|
Beschreibung |
2 komplexe Zahlen werden von der ersten Zahl subtrahiert |
|
In |
- 1 2
|
Out |
1 2
|
Beschreibung |
keine operation durchgeführt |
|
In |
+ 12 3 4
|
Out |
FALSCHE EINGABE
|
Beschreibung |
imaginärteil der 2. zahl fehlt |
|
In |
+ 1 2 3 4 5 6
|
Out |
9 12
|
Beschreibung |
3x addition |
|
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 < Complex1.i1 > Complex1.out1
Das erzeugte File Complex1.out1 können Sie dann mit
dem mitgelieferten Outputfile Complex1.o1 vergleichen.