Partage
  • Partager sur Facebook
  • Partager sur Twitter

Résolution d'équation de polynome de second degré.

    7 octobre 2018 à 6:00:58

    Bonjour à tous !

    Je viens ici pas forcement pour demander de l'aide mais juste pour demander l'avis de personnes plus expérimenté dans le domaine et de me donner quelques conseils pour améliorer le programme !

    Encore merci à ceux qui prendront le temps de donner leur avis et bonne journée à tous !

    (Je précise vite fait que c'est mon tout premier programme en C++ !)

    /*///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////Résolution d'équation de polynome du second degré par Walter Bennet//////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
    
    #include <iostream>
    #include <cmath>
    #include <string>
    
    using namespace std;
    
    int main()
    {
        double a; //Valeur a
        double b;   //Valeur b
        double c; //Valeur c
        double delta; //Valeur delta
        double x0; //Une racine
        double x1; //Une des deux racines
        double x2; //Deuxième des deux racines
        bool continuer (true); //Reset du programme
        string question; //Oui ou non ?
    do
    {
        cout << "Combien vaut a ?" << endl; //Définition de a
        cin >> a;
        cout << "" << endl;
        cout << "Combien vaut b ?" << endl; //Définition de b
        cin >> b;
        cout << "" << endl;
        cout << "Combien vaut c ?" << endl; //Définition de c
        cin >> c;
        delta=b*b-4*a*c; //Calcul de Delta
        cout << "" << endl;
        cout << "======================================================================" << endl;
        cout << "" << endl;
        cout << b << "*" << b << "-4*" << a << "*" << c << "=" << delta << endl; //Affichage du calcul
        cout << "" << endl;
        cout << "Delta vaut " << delta << "." << endl; //Affichage de Delta
        cout << "" << endl;
    
        if(delta>0)
        {
            cout << "Il y a deux racines." << endl; //Affichage du nombre de racine
            cout << "" << endl;
            x1=(-b-sqrt(delta))/(2*a); //Calcul de x1
            x2=(-b+sqrt(delta))/(2*a); //Calcul de x2
            cout << "-" << b << "-racine carre de " << delta << "/par 2*" << a << "=" << x1 << endl; //Affichage du calcul
            cout << "" << endl;
            cout << "-" << b << "+racine carre de " << delta << "/par 2*" << a << "=" << x2 << endl; //Affichage du calcul
            cout << "" << endl;
            cout << "" << endl;
            cout << "x1 est egal a : " << x1 << " | x2 est egal a : " << x2 << endl; //Affichage de x1 et x2
            cout << "" << endl;
            cout << "" << endl;
            cout << "S= {" << x1 << ";" << x2 << "}" << endl; //Affichage du Systéme
            cout << "" << endl;
            cout << "Voulez-vous continuez ? Oui ou Non ?" << endl; //On pose la question
            cin >> question;
    
            if (question == "Non")
            {
                continuer=false; //On change la valeur en false
            }
    
            else
            {
                cout << "" << endl;
                cout << "On continue !" << endl;
                cout << "" << endl;
            }
        }
    
         else if (delta==0)
        {
            cout << "Il y a une racine." << endl; //Affichage du nombre de racine
            cout << "" << endl;
            x0=(b)/(2*a); //Calcul de x0
            cout << b << "/par 2*" << a << "=" << x0 << endl; //Affichage du calcul
            cout << "" << endl;
            cout << "" << endl;
            cout << "x0 est egal a : " << x0 << endl; //Affichage de x0
            cout << "" << endl;
            cout << "" << endl;
            cout << "S= {" << x0 << "}" << endl; //Affichage du Systéme
            cout << "" << endl;
            cout << "Voulez-vous continuez ? Oui ou Non ?" << endl; //On pose la question
            cin >> question;
    
            if (question == "Non")
            {
                continuer=false; //On change la valeur en false
            }
    
            else
            {
                cout << "" << endl;
                cout << "On continue !" << endl;
                cout << "" << endl;
            }
        }
    
        else
        {
            cout << "Il n'y a pas de racine." << endl; //Affichage du nombre de racine
            cout << "" << endl;
            cout << "Voulez-vous continuez ? Oui ou Non ?" << endl; //On pose la question
            cin >> question;
    
            if (question == "Non")
            {
                continuer=false; //On change la valeur en false
            }
    
            else
            {
                cout << "" << endl;
                cout << "On continue !" << endl;
                cout << "" << endl;
            }
        }
    
    } while (continuer);
    
        cout << "" << endl;
        cout << "Merci d'avoir utiliser ce programme !" << endl; //Fin du programme
    
        return 0;
    }
    



    -
    Edité par fokjyvai37 7 octobre 2018 à 6:02:06

    • Partager sur Facebook
    • Partager sur Twitter
      7 octobre 2018 à 7:41:57

      Salut !

      Le truc qui saute aux yeux, c'est la redondance du "voulez-vous continuer ?" et du if correspondant.

      Vu que tu poses la question indépendamment du nombre de racines, ça peut tout à fait être fait après le "if / else if / else" qui teste delta, et ça t'évitera de copier trois fois le même code pour rien.

      Pour le reste, tout va bien il me semble !

      • Partager sur Facebook
      • Partager sur Twitter
        7 octobre 2018 à 8:08:57

        Le truc qui saute le plus aux yeux, c'est que c'est beaucoup trop long.

        Faire une boucle qui

        -demande les coefficients, 

        -appelle une fonction résoudre(a,b,c) qui retourne une chaîne de caractères  (message de reponse)

        -Affiche la réponse 

        -Demande si on veut recommencer

        La fonction résoudre pourra aussi utiliser une fonction delta.

        • Partager sur Facebook
        • Partager sur Twitter
          7 octobre 2018 à 13:28:29

          Gui Yom a écrit:

          Salut !

          Le truc qui saute aux yeux, c'est la redondance du "voulez-vous continuer ?" et du if correspondant.

          Vu que tu poses la question indépendamment du nombre de racines, ça peut tout à fait être fait après le "if / else if / else" qui teste delta, et ça t'évitera de copier trois fois le même code pour rien.

          Pour le reste, tout va bien il me semble !


          Alors en effet, j'ai pu remarquer l'erreur et oui c'est vrai que maintenant c'est moins long et plus lisible ! ^^

          /*///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
          /////////////////////////////////Résolution d'équation de polynome du second degré par Walter Bennet//////////////////////////////////////
          ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
          
          #include <iostream>
          #include <cmath>
          #include <string>
          
          using namespace std;
          
          int main()
          {
              double a; //Valeur a
              double b;   //Valeur b
              double c; //Valeur c
              double delta; //Valeur delta
              double x0; //Une racine
              double x1; //Une des deux racines
              double x2; //Deuxième des deux racines
              bool continuer (true); //Reset du programme
              string question; //Oui ou non ?
              do
              {
                  cout << "Combien vaut a ?" << endl; //Définition de a
                  cin >> a;
                  cout << "" << endl;
                  cout << "Combien vaut b ?" << endl; //Définition de b
                  cin >> b;
                  cout << "" << endl;
                  cout << "Combien vaut c ?" << endl; //Définition de c
                  cin >> c;
                  delta=b*b-4*a*c; //Calcul de Delta
                  cout << "" << endl;
                  cout << "======================================================================" << endl;
                  cout << "" << endl;
                  cout << b << "*" << b << "-4*" << a << "*" << c << "=" << delta << endl; //Affichage du calcul
                  cout << "" << endl;
                  cout << "Delta vaut " << delta << "." << endl; //Affichage de Delta
                  cout << "" << endl;
          
                  if(delta>0)
                  {
                      cout << "Il y a deux racines." << endl; //Affichage du nombre de racine
                      cout << "" << endl;
                      x1=(-b-sqrt(delta))/(2*a); //Calcul de x1
                      x2=(-b+sqrt(delta))/(2*a); //Calcul de x2
                      cout << "-" << b << "-racine carre de " << delta << "/par 2*" << a << "=" << x1 << endl; //Affichage du calcul
                      cout << "" << endl;
                      cout << "-" << b << "+racine carre de " << delta << "/par 2*" << a << "=" << x2 << endl; //Affichage du calcul
                      cout << "" << endl;
                      cout << "" << endl;
                      cout << "x1 est egal a : " << x1 << " | x2 est egal a : " << x2 << endl; //Affichage de x1 et x2
                      cout << "" << endl;
                      cout << "" << endl;
                      cout << "S= {" << x1 << ";" << x2 << "}" << endl; //Affichage du Systéme
                  }
          
                  else if (delta==0)
                  {
                      cout << "Il y a une racine." << endl; //Affichage du nombre de racine
                      cout << "" << endl;
                      x0=(b)/(2*a); //Calcul de x0
                      cout << b << "/par 2*" << a << "=" << x0 << endl; //Affichage du calcul
                      cout << "" << endl;
                      cout << "" << endl;
                      cout << "x0 est egal a : " << x0 << endl; //Affichage de x0
                      cout << "" << endl;
                      cout << "" << endl;
                      cout << "S= {" << x0 << "}" << endl; //Affichage du Systéme
                  }
          
                  else
                  {
                      cout << "Il n'y a pas de racine." << endl; //Affichage du nombre de racine
                  }
          
                  cout << "" << endl;
                  cout << "Voulez-vous continuez ? Oui ou Non ?" << endl; //On pose la question
                  cin >> question;
                  if (question == "Non")
                  {
                      continuer=false; //On change la valeur en false
                  }
          
                  else
                  {
                      cout << "" << endl;
                      cout << "On continue !" << endl;
                      cout << "" << endl;
                  }
                  }
                  while (continuer);
          
                  cout << "" << endl;
                  cout << "Merci d'avoir utiliser ce programme !" << endl; //Fin du programme
          
                  return 0;
          }
          

          michelbillaud a écrit:

          Le truc qui saute le plus aux yeux, c'est que c'est beaucoup trop long.

          Faire une boucle qui

          -demande les coefficients, 

          -appelle une fonction résoudre(a,b,c) qui retourne une chaîne de caractères  (message de reponse)

          -Affiche la réponse 

          -Demande si on veut recommencer

          La fonction résoudre pourra aussi utiliser une fonction delta.

          La pour le coup, si j'ai bien comprit la réponse, c'est juste que j'aime bien avoir un programme qui indique les démarches qu'il à prit afin d'être le plus complet possible.

          -
          Edité par fokjyvai37 7 octobre 2018 à 13:29:13

          • Partager sur Facebook
          • Partager sur Twitter
            7 octobre 2018 à 15:19:28

            En tant que débutant, tu préfères peut être ceci ou cela, qui va te gêner dans un avenir très proche, mais tu ne t'en rends évidemment pas compte.

            Comme la plupart des debutants, tu préfères éviter de te lancer à utiliser des nouveaux concepts, comme les fonctions, quand tu as l'impression que tu pourrais t'en passer. C'est une réaction très commune.

            Mais bon, si tu nous demandes notre avis sur ton programme, y au moment où on remet en question  des choses que tu as tort de preferer.

            -
            Edité par michelbillaud 7 octobre 2018 à 15:21:44

            • Partager sur Facebook
            • Partager sur Twitter
              7 octobre 2018 à 15:30:32

              michelbillaud a écrit:

              En tant que débutant, tu préfères peut être ceci ou cela, qui va te gêner dans un avenir très proche, mais tu ne t'en rends évidemment pas compte.

              Comme la plupart des debutants, tu préfères éviter de te lancer à utiliser des nouveaux concepts, comme les fonctions, quand tu as l'impression que tu pourrais t'en passer. C'est une réaction très commune.

              Mais bon, si tu nous demandes notre avis sur ton programme, y au moment où on remet en question  des choses que tu as tort de preferer.

              -
              Edité par michelbillaud il y a 6 minutes


              C'est surtout que j'en suis même pas encore arrivé la au niveau des cours, je sais à peine appeler une fonction  donc bon... :p

              Mis à part ça, au contraire, je me remet toujours en question, c'est juste que j'ai pour le moment aucune idée de comment faire ce que tu vient d'expliquer, bien que j'en ai comprit la logique...

              -
              Edité par fokjyvai37 7 octobre 2018 à 15:30:52

              • Partager sur Facebook
              • Partager sur Twitter
                7 octobre 2018 à 15:48:04

                Je ne sais pas faire grand chose de plus que d'appeler des fonctions (à part peut être en faire ^^ ). Comme michelbillaud, je dis que c'est trop long, et comme lui, je dis que c'est presque toujours le problème des grands débutants que de toujours vouloir mettre la charrue avant les boeufs. Dans un programme, c'est très simple, je veux faire un truc, je fais une fonction. Diviser pour régner, telle est la règle, face à la complexité. Il n'en existe pas d'autre valable, la fonction est ta meilleure arme (la seule en fait) pour triompher de la complexité...

                C'est le premier principe du programmeur, le principe de responsabilité unique (SRP en anglais), si j'isole bien mes bouts de programme, j'obtiens un ensemble solide et cohérent. La notion de fonction, c'est la brique de base. un programme, c'est comme un jeu de légo, j'assemble mes briques (mes fonctions en l'occurrence) pour bâtir mon programme, si je fais autrement, ça ne marche pas. Là c'est comme la force et le côté obscur, on peut avoir l'impression que ça marche, mais en fait non, c'est beaucoup plus vicieux que ça. Ce n'est pas parce qu'un programme ne plante pas, qu'il donne le bon résultat (celui qui était attendu...). 

                Si mon programme est bien découpé en fonctions dont j'ai précisément défini le périmètre, alors une fois ces fonctions testées, il existe une chance tout à fait raisonnable pour que j'obtienne un programme qui non seulement ne plantera pas, mais donnera en plus le résultat correct ^^

                -
                Edité par int21h 7 octobre 2018 à 16:21:33

                • Partager sur Facebook
                • Partager sur Twitter
                Mettre à jour le MinGW Gcc sur Code::Blocks. Du code qui n'existe pas ne contient pas de bug

                Résolution d'équation de polynome de second degré.

                × 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