![]() |
[C++] Hilfe bei Zahlenraten
Hallo,
ich habe mich mal an C++ gewagt habe mich an ein erstes Spiel gecodet. Es klappt auch fast alles, aber mir fällt folgendes auf. 7 soll die Zahl sein, bei der die Meldung "Richtig" erscheinen soll. NUR (!) bei der 7. Wenn ich allerdings eine Zahl > 7 eingebe und darauffolgend eine Zahl < 7 eingebe, kommt trotzdem die "Richtig" Meldung, was nicht sein sollte/dürfte. Code:
#include <cstdlib> Ich gebe eine Zahl < 7 ein, dann eine Zahl > 7 und dann nochmal eine Zahl < 7. Dann erscheint trotzdem die "Richtig" Meldung. Code:
#include <cstdlib> mfg Underkane //Edit: Wenn ich 7 gleich am Anfang eingebe, bekomme ich trotzdem eine "Falsch" Meldung. Und ich wüsste gerne, wie ich eine Zahl zwischen 1 und 10 automatisch (zufällig) generieren lasse, damit sie sich jedes mal ändert. |
LOL hehe.
|
sorry,
aber LOL hehe :) lösung deines problems kommt gleich. in der ersten while (oder do while) wartest du bis jemand was eingibt was < 7 ist. d.h die while wird _niemals_ verlassen, falls jemand >= 7 eingibt. falls < 7 eingegeben wurde bist du in der 2.ten while. die wird erst verlassen, falls irgendwas > 7 eingegeben wird. dann ist zahl > 7 und die finale if-bedingung wird nicht erfüllt. d.h. der algorithmus ist falsch. |
lol noch besser... sorry.
du verwendest fürs einlesen als auch für den vergleich die gleiche variable :T lösung kommt gleich. |
Code:
int gesucht = 7; |
was den zufallswert angeht, das sollte eigentlich per
Code:
Random rnd = new Random(); aber ich bekomm' das gerade nicht übersetzt und bin zu müde/faul nach ner lösung zu suchen. viel erfolg weiterhin! |
Zitat:
@Underkane: Bei deinem zweiten Beispiel ist das Problem, das die do-while-Schleife immer ausgeführt wird und am Ende nur geprüft wird, ob die Schleife ein zweites Mal durchgeführt ist. @urga: Ganz klar, für diese Erklärung muss man 5 Posts machen, man kann das nicht alles direkt in einem Post schreiben oder nachträglich reineditieren |
Vielen Dank für eure Hilfe.
Ich weiß jetzt wo meine Fehler lagen. Ich habe jetzt das hier: Code:
#include <cstdlib> Ich habe versucht diesen Code hinzuzufügen, aber dann spuckt der Kompiler einen Fehler aus. Code:
int gesucht = 7; Zitat:
Underkane |
Code:
srand (time(NULL)); |
Stand der Dinge:
Code:
#include <cstdlib> Nun möchte ich aber, dass die Zahl zufällig generiert wird. Richtig zufällig muss sie nicht sein, sie kann auch nach einem bestimmten Schema generiert werden, aber man sollte das "Spiel" mindestens 3-4x aufrufen können ohne dass die Zahl doppelt vorkommt. Und am besten soll noch ausgegeben werden ob die gesuchte Zahl größer oder kleiner ist als die eingegebe Zahl. |
du rufst srand garnicht auf...
|
Zitat:
du willst nämlich zufallszahlen, die doch nicht so zufällig sind, und das auch noch über den mehrfachen start des programms hinweg. dazu muss sich das programm (z.b. in einer datei) merken welche zahlen schon gezogen wurden. weiterhin musst du dir pro zahl auch noch was wie einen verfallsstempel zulegen, sonst sind irgendwann alle zahlen schon gezogen und du kannst gar nicht mehr spielen. wenn du das angehen solltest, UNBEDINGT dazu eine neue klasse definieren, sonst herrscht sehr bald code-chaos. |
Zitat:
(Achtung! Ironie!!) @urga Die Idee mit den Zahlen aus einer Datei lesen ist garnicht so schlecht. Ich werde mal schauen, was sich machen lässt. |
was ist denn an dem Beitrag verkehrt?
|
Oh, sorry.
Habe dich falsch verstanden bzw. verlesen..ehrlich gesagt weiß ich selbst nichtmehr, was daran falsch war. Jedenfalls bin ich fertig und habe alles so, wie ich es haben möchte: PHP-Code:
|
Code:
while ((tmp = tmp >> 1) > 0) { |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:56 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.