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

    Inhalt
    Enums...



  • 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_GROSS 2, bei ZU_KLEIN 0 und bei RICHTIG 1 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;
    }
    


  • ...


Anmelden zum Antworten