Problem mit quiz



  • Also ich hab angefangen, mit c++ zu programmieren. Und jetzt hab ich zur übung mal vor, ein kleines quiz zu machen. Das skript hab ich schon geschrieben, aber es geht ein teil nicht:

    #include <iostream>

    using namespace std;

    int i;
    char b = '1334';
    void Yes();
    char h;

    int main (int argc, char *argv[])
    {
    {
    cout << "Hallo!" << endl;
    cout << "blablabla"<< endl;
    cout << "blablabla<< endl;
    cout << "" << endl;
    cout << "" << endl;
    cout << "" << endl;
    cout << "Ez kommt ein quiz" << endl;
    cout << "um das programm zu beenden musst du alle zahlen der reihe nach einfügen und enter drücken" << endl;
    cout << "" << endl;
    cout << "Viel Glück!" << endl;
    cout << "" << endl;
    cout << "" << endl;
    cout << "1. Frage" << endl;
    cout << " 1. x" << endl;
    cout << " 2. y" << endl;
    cout << " 3. z" << endl;
    cout << " 4. w" << endl;
    cout << "" << endl;
    cout << "2. Frage" << endl;
    cout << " 1. a" << endl;
    cout << " 2. k" << endl;
    cout << " 3. l" << endl;
    cout << " 4. p" << endl;
    cout << "" << endl;
    cout << "3. Frage" << endl;
    cout << " 1. t" << endl;
    cout << " 2. q" << endl;
    cout << " 3. e" << endl;
    cout << " 4. f" << endl;
    cout << "" << endl;
    cout << "4. Frage" << endl;
    cout << " 1. m" << endl;
    cout << " 2. n" << endl;
    cout << " 3. j" << endl;
    cout << " 4. g" << endl;
    cin >> i;
    Yes();
    }

    return 0;
    }

    void Yes()
    {
    char quit;

    quit = '\0';
    while (quit != 'a')

    if (i == b)
    {
    cout << "SUPER!! zum beenden a drücken" << endl;
    cin >> quit;
    }
    else if ((i < h) && !(i == b))
    {
    cout << "Leider falsch. Versuchs nochmal!" << endl;
    cin >> i;
    Yes();
    }
    else if ((i > h) && !(i == b))
    {
    cout << "Leider falsch. Versuchs nochmal!" << endl;
    cin >> i;
    Yes();
    }
    }

    und wenn ich das jetzt compiliere und ausführe kommt auch der erste abschnitt (was auch richtig ist) aber wenn ich dann die richtige lösung eingebe, kommt immer "Leider falsch. Versuchs nochmal!". Und wenn ich ein buchstabe eingebe spinnt er und gibt die zeile "Leider falsch..." unendlich mal aus.
    was muss ich da noch verändern, damit es klappt?
    bin dankbar für jede antwort



  • Benutz doch bitte cpp-Tags, die machen das ganze viel übersichtlicher...

    Bsp:

    Dein Code hier
    


  • Hi!

    Ich würde dir sowiso dringent dazu raten das Programm nochmals von Grund auf zu überdenken! 🙂

    grüße



  • sorry!
    also hier den ganzen code im cpp:

    #include <iostream>
    
    using namespace std;
    
    int i;
    char b = '1334';
    void Yes();
    char h;
    
    int main (int argc, char *argv[])
    { 
        {
            cout << "hallo!" << endl;
            cout << "" << endl;
            cout << "hier nun ein quiz" << endl;
            cout << "" << endl;
            cout << "" << endl;
            cout << "" << endl;
            cout << "um zu beenden die lösungen des quiz hineintippen" << endl;
            cout << "" << endl;
            cout << "" << endl;
            cout << ""<< endl;
            cout << "" << endl;
            cout << "" << endl;
            cout << "1. Frage" << endl;
            cout << "       1. ..." << endl;
            cout << "       2. ..." << endl;
            cout << "       3. ..." << endl;
            cout << "       4. ..." << endl;
            cout << "" << endl;
            cout << "2. Frage" << endl;
            cout << "       1. ..." << endl;
            cout << "       2. ..." << endl;
            cout << "       3. ..." << endl;
            cout << "       4. ..." << endl;
            cout << "" << endl;
            cout << "3. Frag" << endl;
            cout << "       1. ..." << endl;
            cout << "       2. ..." << endl;
            cout << "       3. ..." << endl;
            cout << "       4. ..." << endl;
            cout << "" << endl;
            cout << "4. Frag" << endl;
            cout << "       1. ..." << endl;
            cout << "       2. ..." << endl;
            cout << "       3. ..." << endl;
            cout << "       4. ..." << endl;
            cin >> i;
            Yes();
        }
    
        return 0;
    }
    
    void Yes()
    {
         char quit;
    
         quit = '\0';
         while (quit != 'a')
    
         if (i == b)
         {
              cout << "SUPER!! um zu beenden a drücken"<< endl;
              cin >> quit;
         }
         else if ((i < h) && !(i == b))
         {
              cout << "Leider falsch. Versuchs nochmal!" << endl;
              cin >> i;
              Yes();
         }
          else if ((i > h) && !(i == b))
         {
              cout << "Leider falsch. Versuchs nochmal!" << endl;
              cin >> i;
              Yes();
         }
    }
    

    ich hoffe ihr könnt mir helfen

    und wieso nochmal zu überdenken? (is mein erstes programm und muss ja nicht grad perfekt sein)



  • Hi,

    deine 2. Version macht gar nix und deine 1. kompilliert nicht.
    Es ist nichmal c++.
    Benutze keine char sondern std::string, dann sollten auch deine Probleme
    geloest sein.

    Und sowas willst du vielleicht

    cout << "hier nun ein quiz" << endl;
            cout << "" << endl;
            cout << "" << endl;
            cout << "" << endl
    

    durch

    cout << "Hier nun ein Quiz:\n\n\n" << endl;
    

    ersetzen. Und achte auch auf korrekte Schreibweise. Ich haette keinen Bock dein Programm zu benutzen. Da wird einem ja schlecht.



  • 1. wieso ist das kein c++-code?
    2. weiso wird einem schlecht? das programm is ja bis jetzt nur die standart-konsole mit ein paar sätzen drin und eben es kommt nie die meldung " super!! um zu beenden a drücken".

    und es muss ja wie gesagt kein guetes programm sein, da es nur ein test ist!



  • Hi!

    Weil das eins deiner ersten Progrämmchen ist kann man ja drüber wegsehen. Aber das Programm is sowas von übelst aufgebaut...
    Naja, wie gesagt. Lernen, lernen, lernen! 😉

    grüße



  • Habs nur kurz überflogen, aber ich denke das hier ist das Problem:

    char b = '1334';
    

    Ein char speichert immer nur ein Zeichen. Für Zeichenketten brauchst du Char-Arrays (auch C-Strings genannt) oder eben std::string.

    Wenn es schnell gehen soll, solltest du std::string benutzen. Aber du solltest dir auf jeden Fall noch einmal anschauen, wie das mit char, Arrays und Pointern funktioniert.

    Für std::string musst du string includen, und dann kannst du folgendes schreiben:

    std::string b = "1334";
    

    Die Eingabe sollte aber auch ein string sein, das macht das Vergleichen einfacher.



  • Ok, danke viel mals, ich werds mir mal genau anschauen.
    kennt einer ein sehr gutes tutorial, wo ich das lernen kann?



  • http://tutorial.schornboeck.net/inhalt.htm
    http://www.volkard.de/Cpp/Tutorial/index.html

    Und rechts oben auf dieser Seite gibt es auch einen Link "Tutorials"... da solltest du genug finden.


Anmelden zum Antworten