Erraten der Zufallszahl funktioniert nicht
-
ich verweise an der stelle nochmal auf Shade of Mine's Tutorial. Wie ich finde sehr gutes Ding, leider absolut nicht merh aktuell und auch nicht mehr wirklich online
-
Ich merke schon, hauptberuflich werde ich C++ nicht machen...
Die Funkton habe ich jetzt so geschrieben:
enum Relation{ZU_KLEIN,RICHTIG,ZU_GROSS}; Relation vergleiche(int eingabe, int zahl) { if (eingabe<zahl) return ZU_KLEIN; if (eingabe>zahl) return ZU_GROSS; if (eingabe==zahl) return RICHTIG; }Nun wollte ich per cout die Funktion aufrufen, beispielsweise so:
cout << vergleich(einlesen, zahl);Und was ist?? Mal wieder die Meldung
Error: Der Bezeichner "vergleich" ist nicht definiert
-
Mach für heute Schluss und gehs morgen wieder an.
Du hast einfach nurn 'e' vergessen

-
ScottZhang schrieb:
Mach für heute Schluss und gehs morgen wieder an.
Du hast einfach nurn 'e' vergessen

SSSSSSSSSSSSScccccccccccccccccccccccchhhhhhhhhhhhhhhhrrrrrrrrrrrrrrrrrrreeeeeeeeeeeeeiiiiiiiiiiiiiiii
Edit:
enum Relation{ZU_KLEIN,RICHTIG,ZU_GROSS}; Relation vergleiche(int eingabe, int zahl) { if (eingabe<zahl) return ZU_KLEIN; if (eingabe>zahl) return ZU_GROSS; if (eingabe==zahl) return RICHTIG; }Ist es normal, dass bei
ZU_GROSS2, beiZU_KLEIN0 und beiRICHTIG1 rauskommt?
-
ja
-
Damit andere Anfänger, die eine ähnliche Problemstellung haben und nicht mehr weiter wissen, auch etwas davon haben, hier noch einmal der gesamte Code:
#include <ctime> //Header-Datei für time bei srand #include <cstdlib> //Header-Datei für rand und srand #include <iostream> //Header-Datei für "cin" und "cout" using namespace std; enum Relation{ZU_KLEIN,RICHTIG,ZU_GROSS}; Relation vergleiche(int eingabe, int zahl) { if (eingabe<zahl) return ZU_KLEIN; if (eingabe>zahl) return ZU_GROSS; if (eingabe==zahl) return RICHTIG; } 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<<"Eingegebene Zahl ist zu klein!\n"; cout << vergleiche(einlesen, zahl); cout<<"Erneute eingabe\n"; cin>> einlesen; } else if (einlesen>zahl) { cout<<"Eingegebene Zahl ist zu gross!\n"; cout << vergleiche(einlesen, zahl); cout<<"Erneute eingabe!\n"; cin>> einlesen; } if(einlesen==zahl) { cout << vergleiche(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; }Euch gilt auch noch Dank
Gruß
Max
-
bei enums werden (sofern nicht anders angegeben) die einzelnen Enumeranden von 0 an hochgezählt.
enum Beispiel { Zero, // 0 One, // 1 Two, // 2 Second_Zero = 0, // 0 Eins, // 1 Zwei, // 2 Tausend = 1000, // 1000 Next, // 1001 ... etc. };
-
nee du, das gehste morgen nochma in ruhe durch ...
(Edit: bezihet sich auf das 2te post vor mir)
-
...
-
Soviel musst du gar nicht ändern:
Meine Anmerkungen nach // //#include <ctime> //Header-Datei für time bei srand #include <cstdlib> //Header-Datei für rand und srand #include <iostream> //Header-Datei für "cin" und "cout" using namespace std; enum Relation{ZU_KLEIN,RICHTIG,ZU_GROSS}; Relation vergleiche(int eingabe, int zahl) { if (eingabe<zahl) return ZU_KLEIN; else if (eingabe>zahl) // mit else // return ZU_GROSS; else // if (eingabe==zahl) // return RICHTIG; } int main(void) { int zahl, einlesen = 0; //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 " << endl; for(versuche=0; zahl!=einlesen; versuche++) // // eine fussgesteuerte Schleife (do-while) waere besser { cin>>einlesen; // // Am Anfang der Schleife einlesen. if (vergleiche(einlesen, zahl) == ZU_KLEIN) { cout<<"Eingegebene Zahl ist zu klein!\n"; cout<<"Erneute eingabe\n"; } else if (vergleiche(einlesen, zahl) == ZU_GROSS) { cout<<"Eingegebene Zahl ist zu gross!\n"; cout<<"Erneute eingabe\n"; } } // // Hier ist die Schleife schon zu ende // // if(einlesen==zahl) wird nicht mehr gebraucht, geht nicht anders, da sonst die Schleif nicht beendet ist // // { // // cout << vergleiche(einlesen, zahl); was soll das ? cout<<"Anzahl der Versuche: "<<versuche<<endl; // // einmal für alle drei Fälle if(versuche<10) cout<<"Weniger als 10 Versuche, Glueck gehabt\n"; else if(versuche>10) cout<<"Mehr als 10 Versuche, sie haben mehr oder weniger im Nebel gestochert\n"; else // // if(versuche==10) kein if mehr, es bleibt keine andere Moeglichkeit cout<<"Prima, 10 Versuche, sie sind ueberlegt an das Problem herangegangen\n"; // // } noch vom if einlesen==zahl) // // } falsch von for return 0; }
-
...