Erraten der Zufallszahl funktioniert nicht
-
silent_max schrieb:
Jetzt kommt bei jeder eingegebenen Zahl die Meldung "Sie haben weniger als 10 Versuche gebraucht.Glück gehabt."
ist mir auch grad aufgefallen, und das sieht man auf den ersten blick nicht. man muss schon genau gucken -> zeile 37
-
Belli schrieb:
Ja, schlag mal ordentlich vor die Wand.
Und dann bitte beantworte:
Warum hast Du überhaupt einezufallszahl.hgeschrieben?
Mein Lehrer sagt immer, dass Funktionsaufrufe/Funktionsprototypen in eine Headerdatei gehören
Edit:
#include <stdlib.h> //Header-Datei für rand und srand
-
naja, unter Vorbehalt. Bleib lieber erstmal nur bei Programmen in einer Quelldatei.
Aber du brauchst die Datei quasi eh nicht, da du diese Funktion weder geschrieben noch genutzt hast...
edit: merke: jegliche Standard Header die eine "xXx.h" Endung haben, machst du zu "cxXx"
in deinem fall also:
#include <cstdlib> #include <ctime> // etc.
-
Dann schau dir mal die Zeile 37 an und überlege für jedes Zeichen (ja, jedes), warum du es da hingeschrieben hast.
Und dann überlegst du, ob es sinnvoll ist, dass es da steht.Und wenn du so gut bist, dass du gleich die Zahl geraten hast, passiert gar nichts.
-
silent_max schrieb:
Mein Lehrer sagt immer, dass Funktionsaufrufe/Funktionsprototypen in eine Headerdatei gehören
Das ist dann sinnvoll, wenn die Definition der Funktion (der Code) in einer andern Datei (.cpp oder .c) steht.
Man sollte auch nur die Header einbinden, die man wirklich in dem Code braucht.
Gibt es eine zufallszahl.c oder zufallszahl.cpp?
Wenn ja brauchst du da iostream?
Hast du diese auch im Projekt eingebunden?
-
Shade Of Mine schrieb:
Finde den Fehler:
else (einlesen==zahl);
Wenn ich das Semmikolon weglassen, dann bekomme ich folgende Fehlermeldung:
error C2143: Syntaxfehler: Es fehlt ';' vor '{'
-
DirkB schrieb:
Hast du diese auch im Projekt eingebunden?
Ja, habe ich.
-
Das ; ist nur ein Fehler in der Zeile.
Da sind noch 16 andere (in der Zeile).
-
silent_max schrieb:
Shade Of Mine schrieb:
Finde den Fehler:
else (einlesen==zahl);
Wenn ich das Semmikolon weglassen, dann bekomme ich folgende Fehlermeldung:
error C2143: Syntaxfehler: Es fehlt ';' vor '{'und warum?
vergleiche diese zeilen
if( einlesen<zahl) {} else if (einlesen>zahl) {} else (einlesen==zahl) {} // ohne semikolon hitner den runden klammern fehler!
-
silent_max schrieb:
Belli schrieb:
Ja, schlag mal ordentlich vor die Wand.
Und dann bitte beantworte:
Warum hast Du überhaupt einezufallszahl.hgeschrieben?
Mein Lehrer sagt immer, dass Funktionsaufrufe/Funktionsprototypen in eine Headerdatei gehören
Du hast aber weder eine Funktion noch einen Aufruf einer Funktion namens zufallszahl, die Du da in der Header-Datei deklarierst.
-
Nie wieder arbeite ich bei mehreren
if-Anweisungenmitelse...Hier einmal der richtige Code...
#include "zufallszahl.h" #include <time.h> //Header-Datei für time bei srand #include <stdlib.h> //Header-Datei für rand und srand #include <iostream> //Header-Datei für "cin" und "cout" using namespace std; int main(void) { int zahl, einlesen; //Variablen "Zahl" und "Einlesen" als Integer(da Zahlen) deklarieren int versuche; //Versuche ist auch Integer da die Versuche gezählt werden srand((unsigned)time(NULL)); zahl=rand(); //Zahl über Zufallsgenerator erzeugt zahl=zahl%1000+1; //"rand() erzeugt eine Zufallszahl zwischen 2^0 und 2^15, deswegen //%1000+1; %=Modulo -> keine Kommazahlen; 0 bis 1000 cout<<"Zufallszahl zwischen 1 und 1000 eingeben"; cin>>einlesen; for(versuche=0; zahl!=einlesen; versuche++) //Versuche muss mit =0 initialisiert werden { if( einlesen<zahl) { cout<<"Eingebene Zahl ist zu klein!\n"; cout<<"Erneute eingabe\n"; cin>> einlesen; } if (einlesen>zahl) { cout<<"Eingebene Zahl ist zu gross!\n"; cout<<"Erneute eingabe!\n"; cin>> einlesen; } if(einlesen==zahl) { if(versuche<10) { cout<<"Weniger als 10 Versuche, Glueck gehabt\n"; cout<<"Anzahl der Versuche:\n\n"<<versuche<<endl; } if(versuche==10) { cout<<"Prima, 10 Versuche, sie sind ueberlegt an das Problem herangegangen\n"; } cout<<"Anzahl der Versuche:\n\n"<<versuche<<endl; if(versuche>10) { cout<<"Mehr als 10 Versuche, sie haben mehr oder weniger im Nebel gestochert\n"; cout<<"Anzahl der Versuche:\n"<<versuche<<endl; } } } return 0; }
-
Tja ... und nun lass mal
#include "zufallszahl.h"weg und nimm bitte statt time.h ctime und statt stdlib.h cstdlib.
Und dann lösch Deine zufallzahl.h - Headerdatei wieder.
-
Schreib mal in Zeile 16:
zahl = 2;Und dann gibst du auch gleich 2 ein.
-
DirkB schrieb:
Schreib mal in Zeile 16:
zahl = 2;Und dann gibst du auch gleich 2 ein.
Also bei mir bleibt dann die Ausgabe leer... es erscheint gleich die Meldung "Drücken Sie eine beliebege Taste..."
-
silent_max schrieb:
Also bei mir bleibt dann die Ausgabe leer... es erscheint gleich die Meldung "Drücken Sie eine beliebege Taste..."
Ist das wirklich das gewünschte Verhalten?
-
silent_max schrieb:
Nie wieder arbeite ich bei mehreren
if-Anweisungenmitelse...Und jetzt bau das else wieder ein und zwar korrekt.
-
Shade Of Mine schrieb:
silent_max schrieb:
Nie wieder arbeite ich bei mehreren
if-Anweisungenmitelse...Und jetzt bau das else wieder ein und zwar korrekt.
Quatsch. Das braucht er nicht.
-
DirkB schrieb:
Shade Of Mine schrieb:
silent_max schrieb:
Nie wieder arbeite ich bei mehreren
if-Anweisungenmitelse...Und jetzt bau das else wieder ein und zwar korrekt.
Quatsch. Das braucht er nicht.
sollte er aber. Und sei es nur zu Übungszwecken - irgendwann wird er es brauchen.
-
DirkB schrieb:
Shade Of Mine schrieb:
silent_max schrieb:
Nie wieder arbeite ich bei mehreren
if-Anweisungenmitelse...Und jetzt bau das else wieder ein und zwar korrekt.
Quatsch. Das braucht er nicht.
Shade Of Mine ... bitte verstehe mich nicht falsch, aber wozu brauche ich das else, wenn es mit nur if - Anweisungen klappt??
-
DirkB schrieb:
Shade Of Mine schrieb:
silent_max schrieb:
Nie wieder arbeite ich bei mehreren
if-Anweisungenmitelse...Und jetzt bau das else wieder ein und zwar korrekt.
Quatsch. Das braucht er nicht.
Doch, das braucht er. Wann soll er es sonst lernen?