Zahlenraten - Zufallszahl funktioniert, nur Wiederholung des Spiels nicht !!!
-
Hallo!
Danke für den Tip!
Allerdings habe ich jetzt versucht noch eine while - Schleife einzubauen, um weiterspielen zu können. Aber das funktioniert so nicht. Das System springt nicht wieder an die richtige Stelle zurück. Ich muß dem System ja jetzt sagen wohin es bei eingabe ines j zurückspringen soll. Vieleicht noch ein Tip ???
Hier das Programm:
#include "stdafx.h"
#include <stdio.h>
#include <time.h>
#include <stdlib.h>const wertebereich=999;
int Zufallszahl (int max_Zufallszahl=wertebereich){
return rand() %1000;
}int main()
{
int Zufallszahl, Ratezahl, i=0;
char abfrage;srand((unsigned)time(NULL));
rand();printf ("Herzlich Willkommen beim Zahlenraten\n\n");
printf ("Sie muessen versuchen eine von mir per Zufallsgenerator ausgewaehlte\n");
printf ("Zahl zwischen 0 und 1000 zu erraten!\n\n");
printf ("Das System gibt Ihnen folgende Hilfe: Wenn Ihre Zahl\n\n");
printf ("1 bis 10 Nummern < oder > ist als die Zufallszahl erscheint ein Heiss\n");
printf ("11 bis 50 Nummern < oder > ist als die Zufallszahl erscheint ein Warm\n");
printf ("51 Nummern < oder > ist als die Zufallszahl erscheint ein Kalt\n\n");
printf ("Am Ende wird Ihnen die Anzahl Ihrer benoetigten Versuche angezeigt.\n\n");
printf ("Viel Erfolg!\n\n");
printf ("Bitte geben Sie eine Zahl ein.\n");Zufallszahl = (rand() % 1000);
do
{
scanf ("%d", &Ratezahl);if (Ratezahl < Zufallszahl+11 && Ratezahl > Zufallszahl-11)
printf ("Heiss\n");
if (Ratezahl > Zufallszahl+10 && Ratezahl < Zufallszahl+51)
printf ("Warm\n");
if (Ratezahl < Zufallszahl-10 && Ratezahl > Zufallszahl-51)
printf ("Warm\n");
if (Ratezahl < Zufallszahl-50 && Ratezahl >1 || Ratezahl > Zufallszahl+50 && Ratezahl <999)
printf ("Kalt\n");
if (Ratezahl > 999)
printf ("Es werden nur Zahlen zwischen 0 und 1000 gesucht!\n");
++i;if ( Ratezahl != Zufallszahl );
printf("Sie haben die richtige Zahl gefunden\n");
printf("Dazu benoetigten Sie %d Versuche!\n", i);}
printf("Moechten Sie eine weitere Zahl erraten: (j/n)\n");
scanf("%c",&abfrage);while(abfrage !='j');
return 0;
}
-
Da ist so einiges falsch in deinem Code glaube ich
do /* Do-while-Schleife ist gar nicht richtig aufgebaut, dürfte sich so gar nicht compilieren lassen */ { scanf ("%d", &Ratezahl); if (Ratezahl < Zufallszahl+11 && Ratezahl > Zufallszahl-11) printf ("Heiss\n"); if (Ratezahl > Zufallszahl+10 && Ratezahl < Zufallszahl+51) printf ("Warm\n"); if (Ratezahl < Zufallszahl-10 && Ratezahl > Zufallszahl-51) printf ("Warm\n"); if (Ratezahl < Zufallszahl-50 && Ratezahl >1 || Ratezahl > Zufallszahl+50 && Ratezahl <999) printf ("Kalt\n"); if (Ratezahl > 999) printf ("Es werden nur Zahlen zwischen 0 und 1000 gesucht!\n"); ++i; /* Typischer Anfängerfehler das ; hinter der IF Bedinung, außerdem ist die if Bedingung an sich falsch da du ja "Sie die richtige Zahl gefunden" nur ausgeben willst wenn Ratezahl == Zufallszahl ist */ if ( Ratezahl != Zufallszahl ); /* Hier fehlen nun die richtigen Klammern da eine ifanweisung ohne Klammern nur eine Operation ausführen kann */ printf("Sie haben die richtige Zahl gefunden\n"); printf("Dazu benoetigten Sie %d Versuche!\n", i); } printf("Moechten Sie eine weitere Zahl erraten: (j/n)\n"); scanf("%c",&abfrage); /* Whilebedingung falsch, weil wenn der benutzer "n" eintipp sagt er damit er will nicht noch eine runde tippen, du lässt ihn aber dennoch tippen */ while(abfrage !='j');
Hier richtig:
do { scanf ("%d", &Ratezahl); if (Ratezahl < Zufallszahl+11 && Ratezahl > Zufallszahl-11) printf ("Heiss\n"); if (Ratezahl > Zufallszahl+10 && Ratezahl < Zufallszahl+51) printf ("Warm\n"); if (Ratezahl < Zufallszahl-10 && Ratezahl > Zufallszahl-51) printf ("Warm\n"); if (Ratezahl < Zufallszahl-50 && Ratezahl >1 || Ratezahl > Zufallszahl+50 && Ratezahl <999) printf ("Kalt\n"); if (Ratezahl > 999) printf ("Es werden nur Zahlen zwischen 0 und 1000 gesucht!\n"); ++i; if ( Ratezahl == Zufallszahl ) { printf("Sie haben die richtige Zahl gefunden\n"); printf("Dazu benoetigten Sie %d Versuche!\n", i); } printf("Moechten Sie eine weitere Zahl erraten: (j/n)\n"); scanf("%c",&abfrage); }while(abfrage !='j');
Und bitte nutze Codetags!!!
-
bei dem while noch (abfrage !='j') in (abfrage !='n'), hab aus versehen auf absenden geklickt statt auf vorschau.
Hoffe ich hab nix übersehen :roll:
-
@bullijo
In diesem Forum gibt es übrigens keinen Preis dafür, dass man die meisten Threads mit dem gleichem Thema aufmacht.Könntest du bitte mal in einem deiner Threads bleiben und da weitere Fragen zu deinem Programm stellen, anstatt für jede kleine Frage einen eigenen Thread aufzumachen und deinen Quellcode wieder und immer wieder (und das auch noch ohne Formatierung bzw. Code-Tags) reinzuposten?