Partage
  • Partager sur Facebook
  • Partager sur Twitter

Programmation d'un Quiz : if & else ?

    9 juillet 2019 à 4:39:27

    Bonjour ! Je me suis mis au C++ il y a pas longtemps (ça fait une journée en fait) et j'ai eu pour projet de programmer un Quiz (ouais, pas hyper original mais ça m'entraine). Je me suis dis que pour le système de réponse, ça passerais avec "if" et "else" mais pour le moment j'arrive pas à grand chose avec ça.

    Vous auriez une idée de comment améliorer mon quiz ?

    Merci d'avance ! :D

    • Partager sur Facebook
    • Partager sur Twitter
      9 juillet 2019 à 8:40:48

      Bonjour,

      Merci de mettre le code source en conformité avec les regles du forum.

      A ton avis, que fait cette ligne ? 

      std::cin >> A, B, C;

      Sinon quelques points sur ton code :

      > N'utilise pas using namespace

      > N'utilise pas de variables globales

      > Fait des fonctions

      • Partager sur Facebook
      • Partager sur Twitter

      Architecte logiciel - Software craftsmanship convaincu.

        9 juillet 2019 à 9:27:39

        Voici une fonction modulaire pour ton quiz :

        bool question(const std::string& ask, const std::string& ans){
            std::cout<<ask<<std::endl;
        
            std::string reponse;
            std::cin>>reponse;
        
            return (reponse==ans);
        }


        Et voici son appel dans le main :

        question("Capitale de la France ?","Paris");

        La fonction se déclare en dehors du main (et avant).

        Je te conseil aussi d'include <cctype> et d'utiliser sa fonction tolower([ton string ici]); afin de tout convertir en minuscule et d'éviter les erreurs du genre "paris" != "Paris".

        Sinon pour écrire ton texte sur plusieurs lignes (plutôt que de faire plein de cout) tu peux faire ça :

        string monTexte="Bonjour ceci est \
                         mon texte et les \
                         antislash évitent \
                         le retour à la ligne."




        -
        Edité par Zaap98 9 juillet 2019 à 9:30:32

        • Partager sur Facebook
        • Partager sur Twitter
          9 juillet 2019 à 9:51:36

          Zaap98 a écrit:

          Voici une fonction modulaire pour ton quiz :

          bool question(const std::string& ask, const std::string& ans){
              std::cout<<ask<<std::endl;
          
              std::string reponse;
              std::cin>>reponse;
          
              return (reponse==ans);
          }

          Sauf que la c'est pas bon, il demande plusieurs questions.

          Un `std::vector` voir un `std::map` serais la solution.

          • Partager sur Facebook
          • Partager sur Twitter

          Architecte logiciel - Software craftsmanship convaincu.

            9 juillet 2019 à 10:01:01

            necros211 a écrit:

            Zaap98 a écrit:

            Voici une fonction modulaire pour ton quiz :

            bool question(const std::string& ask, const std::string& ans){
                std::cout<<ask<<std::endl;
            
                std::string reponse;
                std::cin>>reponse;
            
                return (reponse==ans);
            }

            Sauf que la c'est pas bon, il demande plusieurs questions.

            Un `std::vector` voir un `std::map` serais la solution.

            Le but de la fonction modulaire est de la rappeler plusieurs fois dans le main (avec un for par exemple).



            • Partager sur Facebook
            • Partager sur Twitter
              9 juillet 2019 à 16:45:47

              Necros je suis désoler je ne connais pas les règles du forum mais je vais faire attention.

              En ce qui concerne vos réponses je vous remercie, je m'attendais pas à en avoir si rapidement. En revanche comm je l'ai déjà dis je viens tout juste de débuter en C++ donc vous avez du voir que je suis pas très doué. Je me débrouille avec ce que je trouve sur internet et le livre "C++ pour les nuls". Pour le moment je ne comprend pas grand chose à ce que vous m'expliquer mais je vais me renseigner pour tout comprendre ! Merci à vous ! :) 

              • Partager sur Facebook
              • Partager sur Twitter
                10 juillet 2019 à 7:55:10

                Je vais te donner un exemple de main pour ton quizz :

                #include <iostream>
                #include <string>
                #include <vector>
                
                bool question(const std::string& ask, const std::string& ans){
                    std::cout<<ask<<std::endl;
                 
                    std::string reponse;
                    std::cin>>reponse;
                 
                    return (reponse==ans);
                }
                
                int main(){
                   std::cout<<"Bienvenue dans ce quizz.\n\n";
                
                   int score(-1);
                   int i(0);
                
                   /** rentre tes question/réponses ici */
                   std::vector<std::string> q;
                   std::vector<std::string> r;
                
                   q.push_back("La capitale de Paris ?");
                   r.push_back("Paris");
                
                   q.push_back("La couleur du chorizo ?");
                   r.push_back("Rouge");
                
                   /** Fin de l'initialisation des questions */
                
                   std::cout<<"Début du quizz !\n\n";
                
                   do{
                       score++; 
                
                      std::cout<<"Question "<<i+1<<" :\n\n";
                   }while(i<q.size() && question(q[i],r[i]));
                
                   std::cout<<"Tu as fini avec un score de "<<score<<" !\n";
                
                   return 0;
                
                
                }


                Si tu ne comprends pas un élément, hésite pas à demander. J'ai essayé de faire simple et de ne pas taper dans des librairy que tu ne connais pas, ni utiliser des structures/classes, mais si tu veux une version avec, demande moi.

                PS : Le code n'a pas été testé/compilé, mais devrais marcher.

                -
                Edité par Zaap98 10 juillet 2019 à 7:58:34

                • Partager sur Facebook
                • Partager sur Twitter
                  11 juillet 2019 à 18:31:05

                  Vire le system("PAUSE") .. pas portable .. tu peux remplacer par : std::cin.get();
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Programmation d'un Quiz : if & else ?

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown