EPROG-LU - Aufgabe 3171 (Rechnen mit Vektoren)
3171 Vektoren Rechnen mit Vektoren
Kategorie:Geometrie
Klasse:schwer
Eingabe:siehe Spezifikation
Ausgabe:siehe Spezifikation
Abzugebende Files: Vektoren.txt, Vektoren.java, *.java , 10180.txt, 10551.txt

Kurzbeschreibung:

Ein String, der eine Rechnung (für Mathematiker: einen Term) mit Vektoren enthält, soll eingelesen und das Ergebnis der Berechnung ermittelt werden.

Allgemeine Hinweise:

Aufgabenstellung:

Lesen Sie einen String ein, der aus folgenden Zeichen bestehen darf: Ziffern, Operatoren "+-*", Klammern "()[]", weiters die Zeichen ",.". Dieser enthält einen mathematischen Ausdruck. Führen Sie die Berechnung durch und geben Sie das Ergebnis aus.

Die Vektoren sind aus R^3; Details entnehmen Sie dem Kapitel "EINGABEDATEN";

Bei der Berechnung sind selbstverständlich Klammerregeln und die Rangfolge der Operatoren (Punktrechnung vor Strichrechnung) zu beachten.

Hier nun die Rechenregeln für Vektoren:

Sei

Für die Berechnung des vektoriellen Produktes dient folgende Formel:

TIP: Die Auswertung derartiger Ausdrücke ist rekursiv am einfachsten zu programmieren.

Eingabedaten:

Lesen Sie den String ein, der die Rechnung enthält. Dieser darf nur aus den oben genannten Zeichen bestehen und muß einen gültigen mathematischen Term enthalten (z.B. keine zwei Operatoren hintereinander, Klammersetzung).

Die Vektoren werden in der Form [x,y,z] eingegeben, wobei die einzelnen Werte auch Nachkommastellen und ein Vorzeichen haben können. Zulässige Eingaben sind z.B. [1,2,3] [2,-3,4] [-4.5,2,1] [1,12.333,5].
Man beachte: -[1,2,3]= [-1.000,-2.000,-3.000]

Es können auch Zahlen mit Nachkommateil (durch "." getrennt) eingegeben werden.

Die eingelesenen Zahlenwerte müssen im Bereich [-100,100] (inkl.) liegen. Ein Skalar muß in runden Klammern "()" stehen.

Von negativen Vorzeichen abgesehen, dürfen maximal 4 Operatoren vorkommen. Es darf nur eine Klammerebene auftreten (die Klammern bei einem Skalar zählen hierbei nicht).

Wenn eine Rechenoperation für die angegebenen Daten nicht definiert ist, sind die Eingabedaten ungültig (z.B. [1.000, 1.000, 1.000] + Skalar oder Skalar + Skalar ist hier undefiniert).

Ausgabedaten:

Bei korrekten Eingabedaten soll Ihr Programm das Resultat der Berechnung in der Form "[ x , y , z ]" ausgeben, wobei folgendes zu beachten ist:

x, y und z sind als Float-Zahlen mit 3 Nachkommastellen auszugeben.

Trennen Sie die Zahlen, den symbolischen Operator "," sowie die Klammern "[]" durch Leerzeichen und geben Sie am Ende einen Zeilenvorschub aus.

Fehlerbehandlung:

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

Beispiele:

Eingabedaten
(2.3)*[3.2,-12,5]+[0.64,7.6,-1.5]

Ausgabedaten
[ 8.000 , -20.000 , 10.000 ]


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

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

Fr Jul 30 13:54:24 CEST 2021
patent_button.gif valid-html401.png elektra.jpg fsfe-logo.png valid-css.png vim.gif anybrowser.gif