Bitte Hilfe



  • Meine weiteren Fragen:

    Wie mache ich das:

    Anstatt Start einzutippen, nur Enter zu drücken, um das Spiel zu starten!
    Und wie kann ich es machen das Markus, MARKUS und markus als Antwort gilt?
    Ist der Code hier o.k. soweit?

    #include <stdio.h> 
    #include <iostream> 
    #include <string> 
    using namespace std; 
    
    int main () 
    { // Markus Quiz 
     cout<<"Danke fuers downloaden, have fun!" <<endl; 
     cout<<"" <<endl; 
    
       const string ANTWORTX="Start"; 
      string NAMEAA; 
      cout<<"Tippe Start um mit dem Quiz zu beginnen!"<<endl; 
      cin>>NAMEAA; 
      if (NAMEAA==ANTWORTX) 
      cout<<"START START START! 
      "<<endl; 
      else  
      cout << 
      " 
      Exit 
      "<<endl;  
    
     const int ANTWORT=17; 
     int NAME; 
     cout<<"Wie alt bin ich?"<<endl; 
     cin>>NAME; 
     if(NAME==ANTWORT) 
       cout<<" 
       Richtig 
       "<<endl; 
     else 
       cout<<" 
       Falsch 
       "<< endl; 
    
      const string ANTWORTA="markus"; 
      string NAMEA; 
      cout<<"Bitte gebe meinen Vornamen in Kleinbuchstaben ein: "<<endl; 
      cin>>NAMEA; 
      if (NAMEA==ANTWORTA) 
      cout<<" 
      Richtig 
    "<<endl; 
      else  
      cout << 
      " 
      Falsch 
      "<<endl;  
    
      const string ANTWORTB="nein"; 
      string NAMEB; 
      cout<<"Habe ich ein Lieblingspiel (nein,ja)? "<<endl; 
      cin>>NAMEB; 
      if (NAMEB==ANTWORTB) 
      cout<<" 
      Richtig, ich habe viele Lieblinhgspiele(>About Me) 
      "<<endl; 
      else  
      cout <<" 
      Falsch 
      "<<endl;  
    
    return 0; 
    
    }
    
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    
    {
      const float ANTWORT=10;
      float ZAHL;
      cout <<"Gebe eine Zahl ein!"<< endl;
      cin>>ZAHL;
      if (ZAHL!=ANTWORT)
          if(ZAHL>ANTWORT)
            cout <<"Weniger"<<endl;
          else (ZAHL<ANTWORT)
            cout <<"Mehr"<<endl;
      else
          cout <<"Gut"<<endl;
    
      return 0;
    
    }
    
    /*Ich flippe noch bald aus, warum kommt immer:
    parse error bei else < tokken
    
    Ich kapiere das net!!!!!!!!!!!!!*/
    


  • du darfst im code keine newlines in einem string haben.



  • markusgamer schrieb:

    //...
    if (ZAHL!=ANTWORT)
          if(ZAHL>ANTWORT)
            cout <<"Weniger"<<endl;
          else (ZAHL<ANTWORT)
            cout <<"Mehr"<<endl;
    //...  
    }
    

    es fehlt noch ein if - else if (zahl < antwort) ...



  • #include <stdio.h>  
    #include <iostream>  
    #include <string>  
    using namespace std;  
    
    int main ()  
    { // Markus Quiz  
     cout<<"Danke fuers downloaden, have fun!" <<endl;  
     cout<<"" <<endl;  
    
       const string ANTWORTX="Start";  
      string NAMEAA;   
    
      cout<<"Tippe Start um mit dem Quiz zu beginnen!"<<endl;  
      cin>>NAMEAA;  
      if (NAMEAA==ANTWORTX)  
      cout<<"START START START!  
      "<<endl;  
      else   
      cout <<  
      "  
      Exit  
      "<<endl;   
    
     const int ANTWORT=17;  
     int NAME;  
     cout<<"Wie alt bin ich?"<<endl;  
     cin>>NAME;  
     if(NAME==ANTWORT)  
       cout<<"  
       Richtig  
       "<<endl;  
     else  
       cout<<"  
       Falsch  
       "<< endl;  
    
      const string ANTWORTA="markus";  
      string NAMEA;  
      cout<<"Bitte gebe meinen Vornamen in Kleinbuchstaben ein: "<<endl;  
      cin>>NAMEA;  
       toupper(&NAMEA.c_str()); //stdlib includen
      if (NAMEA== ANTWORTA)  
      cout<<"  
      Richtig  
    "<<endl;  
      else   
      cout <<  
      "  
      Falsch  
      "<<endl;   
    
      const string ANTWORTB="nein";  
      string NAMEB;  
      cout<<"Habe ich ein Lieblingspiel (nein,ja)? "<<endl;  
      cin>>NAMEB;  
      if (NAMEB==ANTWORTB)  
      cout<<"  
      Richtig, ich habe viele Lieblinhgspiele(>About Me)  
      "<<endl;  
      else   
      cout <<"  
      Falsch  
      "<<endl;   
    
    return 0;  
    
    }
    


  • Das mit dem Klein/Großbuchstaben geht nicht.

    Hab's so kopiert, kommt aber Compilerfehler, habe auch <stdlib> inkludiert.
    und warum schließt das Programm immer bei Dos (konsole) aber bei Linux geht es!
    (beim if, else zahlen programm, nach verbesserung)



  • unter linux schließt sich das progg nicht weil du es von der konsole aus startest und unter windows schließt es sich weil du es eben nicht von der wonsole aus startest!!! deshalb füge bei windows einfach ein getchar(); am ende ein dann muss der user noch enter drücken.

    Du kann auch einfach eine oder Verknüpfung in der if abfrage machen

    if(antwort==NEIN||antwort==nein||antwort==Nein)
    {
    ...
    }



  • eine moeglichkeit:

    #include <iostream>
    #include <algorithm> // fuer equal
    #include <cctype> // fuer tolower 
    
    bool ignorieren( char c1, char c2 )
    {
    	return std::tolower( c1 ) == std::tolower( c2 ); 
    }
    
    void main()
    {
    	std::string s1 = "haLLo";
    	std::string s2 = "haleo";
    
            // equal ruft fuer jedes element der beiden strings die funktion
            // ignorieren auf;
            // ergibt ein aufruf von ignorieren false, so liefert equal false
            // sonst true
    	if ( std::equal( s1.begin(), s1.end(), s2.begin(), ignorieren ) )
    		std::cout << "gleich" << std::endl;
    	else
    		std::cout << "nicht gleich" << std::endl;
    
    	std::cin.get();
    }
    


  • Nochmal ne Frage:

    Warum wird, wenn ich eine falsche Antwort bei einer Frage eintippe gleich ein paar Fragen
    übersprungen und mit wrong beantwortet

    der Code ist ähnlich wie von ganz oben, habe aber auch schon else if probiert, das
    klappt zur Bugbekämpfung auch net.

    Danke schonmal im Voraus!



  • es kann sein, dass im buffer von cin noch weitere eingaben liegen, der stream in einem fehlerhaften zustand ist (wegen falscher eingaben) etc.
    eine beliebte zauberformel dafür lautet:

    cin.clear(); //fehlerbits löschen
    cin.ignore(cin.rdbuf()->in_avail()); //Buffer leeren
    //und danach eine neue eingabe
    cin >> neue_eingabe;
    

Anmelden zum Antworten