Programm soll Zahl erraten



  • Hallo 🙂

    Finde einfach meinen Fehler nicht 😞
    Wäre cool wenn mal jmd drüberschauen könnte ... klappt iwie net so wie ich will

    #include <iostream>
    using namespace std;
    
    int main(){
    
       int min=0,max=20,tip=(max-min)/2;
       int frage1,wahl,fall=0;
    
       cout<<"Denken Sie sich eine Zahl zwischen 0 und 20 aus"<<endl;
       cout<<endl;
       cout<<"Ist es die "<<tip<<" ? (Ja = 1 ; Nein = 0) ";
       cin>>frage1;
    
       if(frage1==1){cout<<"\nDie ausgedachte Zahl lautet: "<<tip<<"\n"<<endl;}
    
       else{
    
       while(fall==0){
    
    	   cout<<"\nIst die ausgedachte Zahl kleiner oder groesser als "<<tip<<" ?\n"<<endl;
    	   cout<<"Wenn die Zahl kleiner ist, druecken sie die 1; ansonsten die 2 ";
    	   cin>>wahl;
    
    	   switch (wahl){
    
    	   case 1: max=tip;
    		       tip = (tip/2);
    			   cout<<"Ist es die "<<tip<<" ? (Ja = 1 ; Nein = 0) ";
    			   cin>>fall;
    			   break;
    
    	   case 2: min=tip; 
    			   tip = ((max-tip)/2)+tip;
    			   cout<<"Ist es die "<<tip<<" ? (Ja = 1 ; Nein = 0) ";
    			   cin>>fall;
    			   break;
    
    	   default: cout<<"Bitte halten Sie sich an die Anweisungen!"<<endl;
    			   } 
                }
    
    		cout<<"Ihre ausgedachte Zahl ist die "<<tip<<endl;
    
    		 }
      return 0;
    }
    


  • was klappt nicht?
    -> Fehler immer genau beschreiben.

    simon





  • Bei mir funktionierts:

    $ g++ -o game game.cpp
    
    $ ./game
    Denken Sie sich eine Zahl zwischen 0 und 20 aus
    
    Ist es die 10 ? (Ja = 1 ; Nein = 0) 0
    
    Ist die ausgedachte Zahl kleiner oder groesser als 10 ?
    
    Wenn die Zahl kleiner ist, druecken sie die 1; ansonsten die 2 2
    Ist es die 15 ? (Ja = 1 ; Nein = 0) 0
    
    Ist die ausgedachte Zahl kleiner oder groesser als 15 ?
    
    Wenn die Zahl kleiner ist, druecken sie die 1; ansonsten die 2 2
    Ist es die 17 ? (Ja = 1 ; Nein = 0) 0
    
    Ist die ausgedachte Zahl kleiner oder groesser als 17 ?
    
    Wenn die Zahl kleiner ist, druecken sie die 1; ansonsten die 2 2
    Ist es die 18 ? (Ja = 1 ; Nein = 0) 0
    
    Ist die ausgedachte Zahl kleiner oder groesser als 18 ?
    
    Wenn die Zahl kleiner ist, druecken sie die 1; ansonsten die 2 2
    Ist es die 19 ? (Ja = 1 ; Nein = 0) 1
    Ihre ausgedachte Zahl ist die 19
    


  • ZB zahl 16 denk ich mir aus!

    10?

    nein--> 0

    größer --> 2

    15?

    nein--> 0

    größer --> 2

    17?

    nein--> 0

    kleiner --> 1

    8? <-- Ich weiß wieso er mich dann nach der 8 fragt aber mir fällt nicht ein wie ich auf die richtige lösung kommen soll

    fehler muss bei case 1 UND 2 liegen in der matheformel



  • Hier funktionierts auch, bis auf dass sich mein Compiler über "using namespace std;" beschwert.



  • Nanyuki schrieb:

    Hier funktionierts auch, bis auf dass sich mein Compiler über "using namespace std;" beschwert.

    😮 Was ist das denn für ein Ding?



  • Zahlen wie zb 16! gehen net 😞



  • darthdespotism schrieb:

    😮 Was ist das denn für ein Ding?

    Es nennt sich C++Builder 1.

    sasdgsdg schrieb:

    Zahlen wie zb 16! gehen net 😞

    Probier mal in beiden Fällen

    tip = ((max-min)/2)+min;
    

    zu schreiben.



  • funktioniert 🙂 danke Poste nachher nochmal die Final Version 🙂



  • sasdgsdg schrieb:

    Zahlen wie zb 16! gehen net 😞

    Ohne die Anpassung:

    $ ./game
    Denken Sie sich eine Zahl zwischen 0 und 20 aus
    
    Ist es die 10 ? (Ja = 1 ; Nein = 0) 0
    
    Ist die ausgedachte Zahl kleiner oder groesser als 10 ?
    
    Wenn die Zahl kleiner ist, druecken sie die 1; ansonsten die 2 2
    Ist es die 15 ? (Ja = 1 ; Nein = 0) 0
    
    Ist die ausgedachte Zahl kleiner oder groesser als 15 ?
    
    Wenn die Zahl kleiner ist, druecken sie die 1; ansonsten die 2 2
    Ist es die 17 ? (Ja = 1 ; Nein = 0) 0
    
    Ist die ausgedachte Zahl kleiner oder groesser als 17 ?
    
    Wenn die Zahl kleiner ist, druecken sie die 1; ansonsten die 2 1
    Ist es die 8 ? (Ja = 1 ; Nein = 0) 0
    
    Ist die ausgedachte Zahl kleiner oder groesser als 8 ?
    
    Wenn die Zahl kleiner ist, druecken sie die 1; ansonsten die 2 2
    Ist es die 12 ? (Ja = 1 ; Nein = 0) 0
    
    Ist die ausgedachte Zahl kleiner oder groesser als 12 ?
    
    Wenn die Zahl kleiner ist, druecken sie die 1; ansonsten die 2 
    2
    Ist es die 14 ? (Ja = 1 ; Nein = 0) 0
    
    Ist die ausgedachte Zahl kleiner oder groesser als 14 ?
    
    Wenn die Zahl kleiner ist, druecken sie die 1; ansonsten die 2 2
    Ist es die 15 ? (Ja = 1 ; Nein = 0) 0
    
    Ist die ausgedachte Zahl kleiner oder groesser als 15 ?
    
    Wenn die Zahl kleiner ist, druecken sie die 1; ansonsten die 2 2
    Ist es die 16 ? (Ja = 1 ; Nein = 0) 1
    Ihre ausgedachte Zahl ist die 16
    


  • So gehts jetzt!

    #include <iostream>
    using namespace std;
    
    int main(){
    
       int min=0,max=20,tip=(max-min)/2;
       int frage1,frage2,frage3,wahl,fall=0;
    
       cout<<"#########################################################"<<endl;
       cout<<"# Denken Sie sich bitte eine Zahl zwischen 0 und 20 aus #"<<endl;
       cout<<"#########################################################"<<endl;
       cout<<"\nIst es die "<<tip<<" ? (Ja = 1 ; Nein = 0) ";
       cin>>frage1;
    
        if(frage1==1){cout<<"\nDie ausgedachte Zahl lautet: "<<tip<<"\n"<<endl;}
    
    	else{cout<<"Ist es die "<<min<<" ? (Ja = 1 ; Nein = 0) ";
    		 cin>>frage2;
    
    		if(frage2==1){cout<<"\nDie ausgedachte Zahl lautet: "<<min<<"\n"<<endl;}
    
    		else{cout<<"Ist es die "<<max<<" ? (Ja = 1 ; Nein = 0) ";
    			 cin>>frage3;
    
    			if(frage3==1){cout<<"\nDie ausgedachte Zahl lautet: "<<max<<"\n"<<endl;}
    
    			else{
    				//Anfang while
    				while(fall==0){
    
    				cout<<"\nIst die ausgedachte Zahl kleiner oder groesser als "<<tip<<" ?\n"<<endl;
    				cout<<"Wenn die Zahl kleiner ist, druecken sie die 1; ansonsten die 2 ";
    				cin>>wahl;
    
    				switch (wahl){
    
    				case 1: max=tip;
    						tip = ((max-min)/2)+min;
    
    						cout<<"\n##### Ist es die "<<tip<<" ? (Ja = 1 ; Nein = 0) #####";
    
    						cin>>fall;
    						break;
    
    				case 2: min=tip; 
    						tip = ((max-min)/2)+min;	
    						cout<<"\n##### Ist es die "<<tip<<" ? (Ja = 1 ; Nein = 0) #####";
    						cin>>fall;
    						break;
    
    				default: cout<<"\nBitte halten Sie sich an die Anweisungen!"<<endl;
    							 } 
    							}
    				//Ende while
    
    				cout<<"\n##### Ihre ausgedachte Zahl ist die "<<tip<<" #####"<<endl;
    				}
    			}
    		} 
      return 0;
    }
    

Anmelden zum Antworten