Partage
  • Partager sur Facebook
  • Partager sur Twitter

débutante : cout cin

    8 août 2007 à 13:36:33

    Bonjour à tous, j'ai un souci de débutante.
    Je n'arrive pas à retrouver mon erreur dans mon programme. :'(
    Quand je saisis "samedi", l'ordinateur devrait me répondre "vive le week-end", mais il a envie que je travaille tous les jours, :( alors il me répond "vive le boulot".
    Merci d'avance

    voici mon code :
    #include <iostream>
    using namespace std;

    int main (){
    enum jours {lundi, mardi, mercredi, jeudi,vendredi, samedi, dimanche};
    char aujourdhui ;
    cout <<"Quel jour sommes-nous aujourd'hui ?";
    cin >> aujourdhui;
    if (aujourdhui == samedi || aujourdhui == dimanche)
    cout << "vive le week-end !"<< endl;
    else cout<<"vive le boulot !";
    return 0;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      8 août 2007 à 13:40:31

      Il va falloir que tu oublies le type énuméré dans ce cas, et que tu travailles avec des std::string.
      (Après, si tu le désires, tu pourras faire 7 tests pour obtenir l'énumé correspondant à la chaine saisie)
      • Partager sur Facebook
      • Partager sur Twitter
      C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
        8 août 2007 à 13:51:57

        oui, tu vas devoirs travailler tous les jours ! C'est comme ça !

        Sinon, regarde : tu recuperes ton jour dans un char : un char, c'est UN caractere.
        --> Si tu en mets plusieurs, un seul sera retenu.

        un enum, en interne, c'est un nombre entier.

        Ici, tu compares donc un char a un entier : il va regarder le code ASCII du char que tu as rentré : bref, ça va te faire n'importe quoi.
        Essaie ça :


        #include <string>
        ...

        std::string s;
        cin >> s;
        if (s=="samedi" || s=="dimanche")
        {
           cout << "tu vas enfin pouvoir dormir toute la journée";
        }

         

        • Partager sur Facebook
        • Partager sur Twitter

        Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

          8 août 2007 à 14:13:48

          Citation : lmghs

          Il va falloir que tu oublies le type énuméré dans ce cas, et que tu travailles avec des std::string.
          (Après, si tu le désires, tu pourras faire 7 tests pour obtenir l'énumé correspondant à la chaine saisie)


          Il a raison, le problème est que tu compare un caractère avec un une valeur entière.
          Si on entre le mot "dimanche" par exemple, cin va récupérer le premier caractère pour le transmettre à la variable 'aujourdhui' (parce que 'aujourdhui' est un 'char' et pas un 'char[]' ou 'char*') c'est à dire 'd' qui a pour valeur 100. Puisque 'dimanche' vaut 6 et 'aujourdhui' vaut 100 le if ne s'execute pas.

          Ce que lgmhs suggère est de faire est d'utliser le type std::string de <string> parce que l'operateur '==' est surchargé.

          EDIT: grillé.
          • Partager sur Facebook
          • Partager sur Twitter

          débutante : cout cin

          × 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