Hamster-Simulator: Habe ich die Aufgabe richtig gelöst, Freunde?
Hey,
kann mir das jemand kontrollieren? Also, ich muss das mit Auswahlanweisungen lösen, aber ich habe jetzt nicht wirklich welche verwendet.
Kann mir das vielleicht jemand korrigieren und vielleicht Tipps geben, wie man das anders schreiben kann? 😃
Danke im Voraus
void main() {
linksUm();
linksUm();
vor();
nimmAcht();
nimmAcht();
linksUm();
linksUm();
vor();
vor();
rechtsUm();
vorGib();
linksUm();
vorGib();
linksUm();
vor();
if (!maulLeer()) {
gib();
}
linksUm();
vor();
gib();
vor();
gib();
vor();
rechtsUm();
vor();
rechtsUm();
vorGib();
linksUm();
vor();
linksUm();
gib();
vor();
gib();
vor();
gib();
vor();
gib();
vor();
}
void nimmAcht() {
nimm();
nimm();
nimm();
nimm();
nimm();
nimm();
nimm();
nimm();
}
void rechtsUm() {
linksUm();
linksUm();
linksUm();
}
void vorGib() {
vor();
gib();
vor();
gib();
vor();
gib();
}
void vierVorGib() {
gib();
vor();
gib();
vor();
gib();
vor();
gib();
vor();
}
1 Antwort
Ob das Programm korrekt funktioniert, kannst du im Hamster-Simulator doch eigentlich selbst testen.
So beim Überfliegen über den Code sehe ich allerdings nicht, wo du die Option handhabst, dass das Bad entweder 3 oder 4 Felder tief sein könnte. Dafür sind nämlich die Auswahlanweisungen gedacht: In der dritten Ebene solltest du prüfen, ob der Hamster noch eine Ebene tiefer gehen kann oder nicht.
Im Übrigen würde ich dir empfehlen, das Programm in mehr Funktionen aufzusplitten. Zum einen könntest du dir Funktionen schreiben, die sich mit den einzelnen Arbeitsschritten allgemein befassen, die zu leisten sind: holeKoerner, geheZuBadeWanne, fuelleReihe). Zum anderen könntest du selbst eine Funktion wie vorGib nochmals mit einer Hilfsfunktion kürzen:
void vorGib() {
vor();
gib();
}
void dreiVorGib() {
vorGib();
vorGib();
vorGib();
}
Bei dem if, welches du einmal verwendest, ist der Code nicht eingerückt. Es sieht so aus, als würde dort die main-Funktion geschlossen werden.
void main() {
// ...
if (!maulLeer()) {
gib();
}
// ...
}
Es gibt die Funktion vornFrei, mit der man prüfen kann, ob der Hamster gerade vor einer Wand steht oder nicht.
if (vornFrei()) {
vor();
}
aber wie macht man das denn dass das halt entweder 4oder 3 felder tief sein kann