Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Débutant] Boucle "do .... while" problème

    24 janvier 2019 à 11:18:36

    Bonjour à tous, 

    Je débute en C++ et j'ai voulu essayé de créer un programme qui va faire l'addition de 2 nombre via une fonction pour m'entraîner aux conditions et fonctions.

    Une fois l'addition faite le programme demande si l'utilisateur veut recommencer une addition : 

    - Si il répond oui l'utilisateur entre une nouvelle addition.

    - Si il répond non le programme se termine .

    - Si il répond autre chose que oui ou non alors le programme redemande si il veut recommencer l'addition. 

    Cependant, si l'utilisateur répond oui, non, ou autre chose le programme recommence ... Pouvez-vous m'aider ? 

    Voici mon code : 

    #include <iostream>
    using namespace std;
    
    double addition(double addition1, double addition2) //fonction permettant l'addition
    {
        double resultatAddition = addition1 + addition2;
        return resultatAddition;
    }
    
    int main ()
    {
        double a=0, b=0;
        string c="choix"; //Initialisation de la chaîne de caractère de la variable c
    
        do
        {
            cout << "Choisir a: " << endl;
            cin >> a;
            cout << "Choisir b: " << endl;
            cin >> b;
            cout << "Le resultat de l'addition " << a << " + " << b << " = " << addition(a,b) << endl;
            cout << "Voulez-vous recommencer l'operation ? oui ou non" << endl;
            cin >> c;
        }
    
            while ((c != "oui") || (c != "non")); //Tant que la personne n'a pas repondu oui ou non alors la boucle continue
            {
                cout << "Merci d'entrer oui pour continuer ou non pour arreter le programme." << endl;
                cin >> c;
            }
    
                if (c == "oui")
                {
                    cout << "Super vous avez choisi de recommencer" << endl;
                    return main();
                }
    
                    if (c == "non")
                    {
                        cout << "Dommage, j'espere que mon programme vous aura plu !" << endl;
                        return 0;
                    }
    
        return 0;
    }
    

    Je sais que le problème vient de ma boucle "do ... while" mais je ne trouve pas le problème ... o_O

    -
    Edité par LightYagami9 24 janvier 2019 à 11:28:33

    • Partager sur Facebook
    • Partager sur Twitter
      24 janvier 2019 à 11:32:12

      Lu'!

      N'utilise pas "using namespace std" (raison + que faire).

      Concernant ton code le voici avec une présentation plus claire, c'est exactement le même code j'ai juste retiré le using namespace std et changé les espacements. Tu comprendras sûrement que ça n'est probablement pas ce que tu veux :

      #include <iostream>
       
      double addition(double addition1, double addition2) //fonction permettant l'addition
      {
        double resultatAddition = addition1 + addition2;
        return resultatAddition;
      }
       
      int main ()
      {
        double a=0, b=0;
        std::string c="choix"; //Initialisation de la chaîne de caractère de la variable c
       
        do{
          std::cout << "Choisir a: " << std::endl;;
          std::cin >> a;
          std::cout << "Choisir b: " << std::endl;;
          std::cin >> b;
          std::cout << "Le resultat de l'addition " << a << " + " << b << " = " << addition(a,b) << std::endl;;
          std::cout << "Voulez-vous recommencer l'operation ? oui ou non" << std::endl;;
          std::cin >> c;
        } while ((c != "oui") || (c != "non"));
      
      
        
        {
          std::cout << "Merci d'entrer oui pour continuer ou non pour arreter le programme." << std::endl;;
          std::cin >> c;
        }
       
        if (c == "oui"){
          std::cout << "Super vous avez choisi de recommencer" << std::endl;;
          return main();
        }
       
        if (c == "non"){
          std::cout << "Dommage, j'espere que mon programme vous aura plu !" << std::endl;;
          return 0;
        }
       
        return 0;
      }

      Par ailleurs, ON N'APPELLE JAMAIS LA FONCTION 'main' DANS LE CODE.

      -
      Edité par Ksass`Peuk 24 janvier 2019 à 11:33:11

      • Partager sur Facebook
      • Partager sur Twitter

      Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

        24 janvier 2019 à 16:24:53

        Merci pour ta réponse, 

        J'ai modifié mon code comme suggéré ! ;)

        Par contre, y'a t'il quelqu'un pour m'aider à résoudre mon problème de ma condition do .... while ? 

        Merci à tous 

        • Partager sur Facebook
        • Partager sur Twitter
          24 janvier 2019 à 16:48:27

          bool nouvellePartie()
          {
            std::string c="";
            do
            {
              std::cout << "Voulez-vous recommencer l'operation ? oui ou non" << std::endl;;
              std::cin >> c;
            }while((c != "oui") && (c != "non"));
          
            return c == "oui";
          }
          
          int main ()
          {
            double a=0, b=0;
            
            do{
              std::cout << "Choisir a: " << std::endl;;
              std::cin >> a;
              std::cout << "Choisir b: " << std::endl;;
              std::cin >> b;
              std::cout << "Le resultat de l'addition " << a << " + " << b << " = " << addition(a,b) << std::endl;
            } while (nouvellePartie());
          ...
          }
          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            24 janvier 2019 à 17:08:18

            LightYagami9 a écrit:

            Par contre, y'a t'il quelqu'un pour m'aider à résoudre mon problème de ma condition do .... while ?

            Relis le code. Le bloc de code qui est à la fin n'est pas associé à ton while. Relis un cours à ce sujet.

            • Partager sur Facebook
            • Partager sur Twitter

            Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

            [Débutant] Boucle "do .... while" problème

            × 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