PR1 Aufgabensammlung
Go to file
Lukas Klipfel c21d162358 Aufgabenstellung v1.0 2025-12-22 18:04:36 +01:00
src/de/hs_mannheim/Rekursiver_Rechner Aufgabenstellung v1.0 2025-12-22 18:04:36 +01:00
.classpath Aufgabenstellung v1.0 2025-12-22 18:04:36 +01:00
.gitignore Initial commit 2025-12-22 13:53:38 +01:00
.project Aufgabenstellung v1.0 2025-12-22 18:04:36 +01:00
LICENSE Initial commit 2025-12-22 13:53:38 +01:00
README.md Aufgabenstellung v1.0 2025-12-22 18:04:36 +01:00

README.md

Rekursiver Rechner

Repo zur Aufgabe

Hier: 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.+-/*

Immediate execution 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.)