Ich seh da keinen Zufallszahlengenerator, nur eine nicht initialisierte Variable. Da kann irgendwas drinstehen was vorher im Stack an der Speicherstelle stand.
Was zwar rein theoretisch zwar zu einer Zufallszahl führt.
Dann ist der Wert immer das, was vorher im Speicher stand. Wenn an der Speicherstelle „zufällig“ vorher eine Variable liegt, die immer eins ist, wird da auch nie was anderes rauskommen.
ich sehe, dass du in der Funktion Spielen() eine Integer-Variable namens ZufallsZahl deklarierst. Ich sehe aber nirgends eine Zuweisung. Damit ist ja nur der Speicher reserviert, was da drin steht, ist nicht definiert, kann totaler Blödsinn sein. Bei int zwischen -2147483648 und 2147483647, bei short unsigned int zwischen 0 und 65535. Ich sehe auch keinen Zusammenhang zwischen ZufallsZahl und Bereich -
du willst aber doch einen Wert zwischen 1 und „Bereich“, richtig? Dazu kannst du dir mal folgenden Forumsbeitrag anschauen: http://www.computerbase.de/forum/showthread.php?t=10…
Ich hoffe, das hilft dir weiter.
Grüße
Burkhard
PS du kannst „void main()“ benutzen, dann sparst du dir das „return 0“ am Ende
Was ich noch vergessen hatte - damit du nicht immer dieselben Zufallszahlen erhälst, solltest du ganz am Anfang in main() einmalig den Generator initialisieren:
srand(time(NULL));
Nötige Includes: #include // für NULL #include // für time()
Du setzt die Variable ‚ZufallsZahl‘ gar nie. Der Speicherbereich wird deshalb nie initialisiert und hat deshalb einen undefinierten Wert. Dieser ist vermutlich von der vorherigen Abfrage zufälligerweise auf dem Wert des Levels oder des Bereiches.
Wie der Zufallsgenerator in C heisst weiss ich leider nicht mehr, aber bei Google solltest du, wenn du nach rand oder random suchst, die Funktion und den evtl. Nötigen include finden.
Hallo Blanus,
warum ich ausgewählt wurde, ist mir schleierhaft, aber was soll’s.
Die Funktion, in der eine Zufallszahl gebraucht wird, scheint mit nicht korrekt zu sein. Es wird nur eine Variable definiert, ohne das eine Wertzuweisung erfolgt. Aber mit C oder C++ arbeit ich schon lange nicht mehr.
Sorry.
WM
ich habe Dein Programm mit Microsoft Visual Studio 2008 kompiliert und gelingkt. Beied Schritte laufen fehlerfrei durch. Im Debug-Modus stürzt das Programm nach der Eingabe von „N“ ab. Im Release-Modus stürzt es nicht ab. Macht aber nicht das, was Du beschreibst. Das könnte daran liegen, dass Du eventuell einen anderen Compiler/Linker benutzt. Was benutzt Du? Der Grund für den Absturz ist, dass in der Methode int Spielen (int Level) die int-Variable ZufallsZahl nicht initialisiert wurde. Der Wert dieser Variablen ist also irgend etwas, was gerade im Speicher steht. Du solltest dort also sowas schreiben wie:
int ZufallsZahl=1;
Noch eine Bemerkungen zu Deinem Programm: Ich habe keine Stelle gefunden, an der die zufälligen Zahlen, die dann geraten werden sollen, erzeugt werden. Willst Du das noch implementieren? Eine Möglichkeit wäre: