2.3 KiB
Rekursiver Rechner
Repo zur Aufgabe
Hier: https://gitty.informatik.hs-mannheim.de/3029257/Rekursiver_Rechner_Aufgabenstellung
finden Sie ein git-repo mit der Aufgabenstellung und Tests. Sie müssen lediglich die Funktion: double RekursiveSquentielleBerechnung() vervollständigen. Mit Hilfe der Tests weiß man, ob die Aufgabe korrekt ist.
Aufgabe
Erstellen Sie einen Rechner der Sequentielle Eingabe zum Berechnen des Ergebnisses rekursiv verwendet. In dem Eingabe String sind nur die folgenenden Zeichen erlaubt: 0-9.+-/*
Sequentielle Eingabe erklärt
Wikipedia: Sequentielle Eingabe (Deutsch)
Bsp.:
5.5+4.5*10
Normale Berechnung (Algebraische Notation):
5.5+4.5*10 | Klammern setzen (Rangfolge der Operatoren beachten)
=5.5+(4.5*10)
=5.5+45
=50.5
Sequentielle Eingabe:
5.5+4.5*10 |Von links nach rechts berechnen (ohne Beachtung der Rangfolge der Operatoren)
=10*10
=100
Hinweis: Der "normale" Windows Rechner arbeitet nach dem Sequentiellen Eingabe Prinzip.
Weitere Hinweise
Randfälle definiert
Falls ein Operator am Ende des Strings steht, soll er ignoriert werden.
Bsp.:
+ - / *
10+ 10- 10/ 10*
=10+0 =10-0 =10/1 =10*1
=10 =10 =10 =10
Falls Operator an Operator steht, soll er das Ergebniss nicht ändern.
Bsp.:
+++ --- /// *** +-/*
10++++5 10----5 10////5 10***5 10+-/**5
=10+0+0+0+5 =10-0-0-0-5 =10/1/1/1/5 =10*1*1*1*5 =10+0-0/1*1*5
=15 =5 =2 =50 =50
Falls ein Operator an erster Stelle steht ist die vorhergehende Zahl 0.
Bsp.:
+ - / *
=0+0 =0-0 =0/1 =0*1
=0 =0 =0 =0
Zahlen wie "5." entsprechen "5.0" und ".5" entsprechen "0.5".
Nur "." als Zahl ist ungültig.
Bei Rechnungen "/0" soll als Ergebniss Double.POSITIVE_INFINITY oder Double.NEGATIVE_INFINITY zurück gegeben werden. (Das macht Java bei Rechnungen "/0" von sich aus.)