Mondlandung

ineedhelp1

Mitglied
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

Top Contributor
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

Mitglied
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
 
Zuletzt bearbeitet:

ARadauer

Top Contributor
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

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

Neue Themen


Oben