Schleife programmieren < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Aufgabe | Der Computer "merkt" sich eine Zufallszahl zwischen 1 und 100, die der
Spieler erraten soll. Der Spieler hat unendlich viele Versuche. Nach jedem falschen Versuch gibt der Computer an, ob die angegebene Zahl zu klein oder zu groß ist. Der Spieler hat gewonnen, wenn er die gesuchte Zahl errät. |
Hallo, ich habe es mit einer while-Schleife versucht, aber da ist irgendwo ein Denkfehler drin.
Erster Ansatz:
Ergebnis = randi(100,1);
Antwort_VP = input('Bitte errate die Zahl zwischen 1 und 100: ');
while Antwort_VP~=Ergebnis
if (Antwort_VP>Ergebnis);
disp('Meine Zahl ist kleiner, versuch es noch einmal!');
elseif (Antwort_VP<Ergebnis);
disp('Meine Zahl ist größer, versuch es noch einmal!');
else;
disp('Hatt ja nicht mehr mit gerechnet, bist doch nicht so dusselig, wie Du aussiehst, das war richtig!');
end
Dann hängt Matlab sich nach der ersten Eingabe auf!
Zweiter Ansatz:
Ergebnis = randi(100,1);
Antwort_VP = input('Bitte errate die Zahl zwischen 1 und 100: ');
while Antwort_VP~=Ergebnis
if (Antwort_VP>Ergebnis);
disp('Meine Zahl ist kleiner, versuch es noch einmal!');
end
elseif (Antwort_VP<Ergebnis);
disp('Meine Zahl ist größer, versuch es noch einmal!');
end
else;
disp('Hatt ja nicht mehr mit gerechnet, bist doch nicht so dusselig, wie Du aussiehst, das war richtig!');
end
end
Dann habe ich eine Endlosschleife....WO LIEGT MEIN DENKFEHLER??
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
> Der Computer "merkt" sich eine Zufallszahl zwischen 1 und
> 100, die der
> Spieler erraten soll. Der Spieler hat unendlich viele
> Versuche. Nach jedem falschen Versuch gibt der Computer an,
> ob die angegebene Zahl zu klein oder zu groß ist. Der
> Spieler hat gewonnen, wenn er die gesuchte Zahl errät.
> Hallo, ich habe es mit einer while-Schleife versucht, aber
> da ist irgendwo ein Denkfehler drin.
> Erster Ansatz:
> Ergebnis = randi(100,1);
> Antwort_VP = input('Bitte errate die Zahl zwischen 1 und
> 100: ');
>
> while Antwort_VP~=Ergebnis
> if (Antwort_VP>Ergebnis);
> disp('Meine Zahl ist kleiner, versuch es noch einmal!');
> elseif (Antwort_VP<Ergebnis);
> disp('Meine Zahl ist größer, versuch es noch einmal!');
> else;
> disp('Hatt ja nicht mehr mit gerechnet, bist doch nicht so
> dusselig, wie Du aussiehst, das war richtig!');
> end
> Dann hängt Matlab sich nach der ersten Eingabe auf!
>
> Zweiter Ansatz:
> Ergebnis = randi(100,1);
> Antwort_VP = input('Bitte errate die Zahl zwischen 1 und
> 100: ');
>
> while Antwort_VP~=Ergebnis
> if (Antwort_VP>Ergebnis);
> disp('Meine Zahl ist kleiner, versuch es noch einmal!');
> end
> elseif (Antwort_VP<Ergebnis);
> disp('Meine Zahl ist größer, versuch es noch einmal!');
> end
> else;
> disp('Hatt ja nicht mehr mit gerechnet, bist doch nicht so
> dusselig, wie Du aussiehst, das war richtig!');
> end
> end
> Dann habe ich eine Endlosschleife....WO LIEGT MEIN
> DENKFEHLER??
Hallo Ichlerndasnie
( ... mittels MR vielleicht ja doch noch ... )
Ohne mich in Matlab wirklich auszukennen:
stecken in deinem Programmtext nicht viel zu viele
Strichpunkte ??
(ein Strichpunkt unmittelbar nach einem "else" macht
z.B. wirklich keinen Sinn !)
LG Al-Chwarizmi
|
|
|
|
|
Hallo,
danke dass mir hier geholfen wird, hab ich schon festgestellt.... Habe inzwischen den Fehler selbst gefunden, Dein Tipp mit dem Zuviel an Strich-Punkten war dabei recht hilfreich. Hier meine richtge Lösung:
Ergebnis = randi(100,1);
Antwort_VP=input('Bitte errate die Zahl zwischen 1 und 100: ');
while Antwort_VP~=Ergebnis
Antwort_VP=input('Bitte errate die Zahl zwischen 1 und 100: ');
if (Antwort_VP>Ergebnis)
disp('Meine Zahl ist kleiner, versuch es noch einmal!');
elseif (Antwort_VP<Ergebnis)
disp('Meine Zahl ist größer, versuch es noch einmal!');
else
disp('Hatt ja nicht mehr mit gerechnet, bist doch nicht so dusselig, wie Du aussiehst, das war richtig!');
end
end
Trotzdem Danke!!
|
|
|
|
|
Hallo,
die Zeile
Antwort_VP = input('Bitte errate die Zahl zwischen 1 und 100: ')
gehört in die while-Schleife. Andernfalls macht man eine Eingabe und hat keine Chance mehr sie zu verändern. War die Eingabe dann falsch, läuft die Schleife endlos weiter, weil man ja keine Chance mehr hat, die Zahl zu verändern.
Und noch ein kleiner Hinweis:
Nach "if", "else" und "disp" muss man nicht unbedingt ein ";" setzen, weil dies keinen Effekt hat. Also spart man sich das in der Regel.
|
|
|
|
|
Ist schon nett, dass ich meine LÖsung zur gleichen Zeit gepostet habe, wie Du. Danke für die Mühe
|
|
|
|
|
Hallo,
programmieren kann ich gar nichts,
aber mal ein Hinweis völlig OT:
Dein Nickname ist nicht gut für Dich...
"Ichkannganzbestimmtalleslernen" wäre echt besser - und auch treffender, nicht wahr?
Viel Erfolg!
LG Angela
|
|
|
|
|
Ist lediglich der Ausdruck von totalem Frust und von meiner Verweigerungshaltung in Sachen Programmieren. Würde mich damit nicht mehr beschäftigen, wenn ich nicht dieses Seminar an der Uni abschliessen wollte.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:28 Mo 06.08.2012 | Autor: | fred97 |
"Lernen und Genießen sind das Geheimnis eines erfüllten Lebens. Lernen ohne Genießen verhärmt, Genießen ohne Lernen verblödet."
Richard David Precht: Wer bin ich – und wenn ja, wie viele? Eine philosophische Reise (Goldmannverlag)
Gruß FRED
|
|
|
|