# Mondlandung



## ineedhelp1 (14. Mai 2015)

Hallo Community,

ich habe ein Problem bei einer Hausaufgabe, dass wie folgt aussieht:

Eine bemanntes Raumschiff soll im Schwerkraftfeld des Mondes landen. Zum Startzeitpunkt
(nach 0 Sekunden) hat es noch eine Höhe von H(0) = 200m über der Oberfläche und
eine Startgeschwindigkeit von V (0) = 0 ms . Ziel ist es, sanft auf der Oberfläche (bei H =0m) aufzusetzen, damit die Insassen nicht zuschaden kommen. Dafür kann der Pilot des
Raumschiffs begrenzt Gegenschub geben (0 <=  Schub <=  10).
Startwerte:
H(0) = 200; V (0) = 0
Veränderung der Werte von jeder Sekunde s zur nächsten Sekunde s + 1:
H(s + 1) = H(s)  V (s)
V (s + 1) = V (s) + 5  Schub(s)
Setzen Sie den in folgendem Struktogramm gegebenen Algorithmus zur interaktiven Mondlandung
in einem Java-Programm um.
Setze Startwerte für H und V.
Solange (H >= 0):
Ausgabe: aktuelle Position und Geschwindigkeit
Eingabe: Neuer Schub für diese Sekunde
Begrenze Schub auf Bereich [0,10].
Aktualisiere Werte H und V.

ich stecke an der Stelle fest, an welcher die Veränderung der Werte nach s + 1 stattfinden. 

Kann mir jemand helfen?


----------



## Tobse (14. Mai 2015)

Du hast in den Formeln für H(s + 1) und V(s + 1) leider ein Zeichen, was bei mir nicht richtig dargestellt wird. Daher kann ich leider keine konkrete Antowort geben.

Allgemein Gesprochen: Die Notation H(s + 1) bedeutet Rekursion. Wir betrachten mal die Sekunden 0 und 1:
s = 0;
H = H(s) = 200
V = V(s) = 0
Du kannst mit den gegebenen Formeln jetzt H und V in abhängigkeit von s + 1, also 1 berechnen (? steht für das Zeichen, dass ich nicht sehe):
H(1) = H(s + 1) = H(s) ? V(s) = 200 ? 0
V(1) = V(s + 1) = V(s) + 5 ? Schub(s) = 0 + 5 ? <Eingabe>

Jetzt geht das ganze in die nächste Runde, s wird um 1 erhöht; jetzt kannst du also H(2) und V(2) inabhängikeit der Werte der Vorrunde H(1) und V(1) berechnen.


----------



## ineedhelp1 (17. Mai 2015)

Sorry, die Veränderung der Werte sieht wie folgt aus:
H(s + 1) = H(s) -  V (s)
V (s + 1) = V (s) + 5 - Schub(s)
ja so weit so gut. das habe ich auch verstanden, nur endet mein code nie weil ich nicht verstehe, wie ich die rekursion schreiben muss.
als beispiel:

while(h >= 0){
			System.out.println("Aktuelle Position ist" + " " + h + "m" + " " + "und Geschwindigkeit" + " " + v + "m/s");

			if (h + t == h - v && v + t == v + 5 - schub){
				if(0 <= schub && schub <= 10)
				t = t + schub;
				t++;

			}
ich weiß dass das falsch ist, doch komm ich hier einfach nicht weiter. wo liegen die fehler???
die deklaration,  ein und ausgabe funktioniert einwandfrei. nur der code zur berechnung nicht


----------



## Tobse (17. Mai 2015)

Was tut er denn? Und was ist falsch daran?


----------



## ARadauer (17. Mai 2015)

bitte in so einem Fall keine Rekursion schreiben... da hat unser Steuerprogramm einen Stackoverflow... da haben wir noch nicht mal die Atmosphäre erreicht... ;-)
fehlt hier nicht ein bisschen gravitation?


----------



## Tobse (17. Mai 2015)

ARadauer hat gesagt.:


> bitte in so einem Fall keine Rekursion schreiben...


Das mit der Rekursion war bezogen auf die Form seiner Formel V(s + 1)


----------



## ineedhelp1 (19. Mai 2015)

ja das mit dem overflow habe ich auch bemerkt, aber wie mache ich es besser


----------



## Tobse (19. Mai 2015)

Indem du mit einer Schleife rechnest. Bei einer Schleife kannst du viel leichter Abbruchbedingungen festlegen etc.


----------

