Erraten der Zufallszahl funktioniert nicht



  • 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 eine

    zufallszahl.h
    

    geschrieben?

    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-Anweisungen mit else ...

    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-Anweisungen mit else ...

    Und jetzt bau das else wieder ein und zwar korrekt.



  • Shade Of Mine schrieb:

    silent_max schrieb:

    Nie wieder arbeite ich bei mehreren if-Anweisungen mit else ...

    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-Anweisungen mit else ...

    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-Anweisungen mit else ...

    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-Anweisungen mit else ...

    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?



  • Erstmal soll das Programm richtig funktionieren.
    Dafür braucht er das else nicht.

    Wenn das erledigt ist kann er (oder du) das else einbauen.



  • Ich kann mich täuschen...

    Aber machen if...else Anweisungen nicht mehr Sinn, wenn man zwei Auswahlmöglichkeiten hat... if ... else drückt es doch aus entweder...oder bzw. wenn ... sonst ...



  • silent_max schrieb:

    Shade Of Mine ... bitte verstehe mich nicht falsch, aber wozu brauche ich das else, wenn es mit nur if - Anweisungen klappt??

    Weil das der Programmlogik entspricht. Diese Logik ist nunmal "entweder-oder". Wenn sich die Möglichkeiten derart gegeneinander ausschließen, verwendet man "else". Optimierungsfetischisten würden jetzt die Performance erwähnen, die in diesem Fall aber vernachlässigt werden kann. Alle anderen spielen die Karte "Leserlichkeit/Verständnis". Wenn ich ein Stück Code verstehen will, dann überlege ich, in welchen Situationen der jeweilige Block durchlaufen wird. Da ist so ein "else" sehr hilfreich, insbesondere wenn die Bedingungen nicht ganz so offensichtlich sind, wie hier.



  • silent_max schrieb:

    Aber machen if...else Anweisungen nicht mehr Sinn, wenn man zwei Auswahlmöglichkeiten hat... if ... else drückt es doch aus entweder...oder bzw. wenn ... sonst ...

    Wenn es vor 11 Uhr ist, bin ich müde. Sonst - wenn es noch vor 13 Uhr ist - bin ich hungrig. Ansonsten freue ich mich auf den Feierabend.


Anmelden zum Antworten