Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme de boucle sur une calculatrice

    17 janvier 2006 à 20:14:59

    salut otu le monde, voila apres avoir lu les cours sur le site j'ai fait une petite calcultatrice toute bete et toute simple en decomposant les fonctions. Tout marchait jusqu'à que je crée lafonction racine. LE programme s'execute normalement, le calcul se fait mais quand on demande a l'utilisateur si il veut revenir au menu principal et qu'il di oui, le menu principale s'affiche et les option du menu reaffiche toutes le menu sauf celle pour quitter.J'ai chercher j'ai pas toruver d'erreru dans les boucles donc voila si quelqu'un peu m'indiquer mon erreur :
    #include <cstdlib>
    #include <iostream>
    #include <math.h>
    using namespace std;


    int main(int argc, char *argv[])
    {
        double addition(double var1, double var2);
    double carre(double var1);
        double division(double var1, double var2);
        double produit(double var1, double var2);
        double soustraction(double var1, double var2);
        double racine(double var1);
        int menu;
         int continuer = 0;
        int retour = 1;
        double resultat = 0;
        double var1;
        double var2;
        while (retour == 1) //on utilise le while pour pouvoir revenir au menu principal
        {
       printf("ceci est une minie calculatrice capable de realiser les operations de base.\n");
       printf("Menu :\nAddition : 1\nSoustraction : 2\nMultiplication : 3\nDivision : 4\nCarre : 5\nRacine carree : 6\nQuitter : 9\n");
       scanf("%ld", &menu);// on demande al'utilisateur de choisir une fonction
       // on lance la fonction correspondante grâce a un switch
       switch (menu) // le switch pour choisir les differentes opt du menu
       {
         
                       case 1 :
                   printf("entrez chaque nombres suivi de entrer pour quitter taper 1 apres le calcul\n");
                  while (continuer == 0) // ce while si on veut continuer dans le meme menu
                  {
                   scanf("%lf", &var1);
                   scanf("%lf", &var2);
                   resultat = addition(var1, var2);
                   printf("le resulat est : %lf\n", resultat);
                     printf("taper 1 pour revenir au menu precedent 0 pour continuer\n");
                   scanf("%ld", &continuer);
                   }
                   retour = 1;
                   break;
              case 2 :
                   printf("entrez chaque nombres suivi de entrer pour quitter taper 1 apres le calcul\n");
                  while (continuer == 0)
                  {
                   scanf("%lf", &var1);
                   scanf("%lf", &var2);
                   resultat = soustraction(var1, var2);
                   printf("le resulat est : %lf\n", resultat);
                     printf("taper 1 pour revenir au menu precedent 0 pour continuer\n");
                   scanf("%ld", &continuer);
                   }
                   retour = 1;
                   break;
              case 3 :
                   printf("entrez chaque nombres suivi de entrer pour quitter taper 1 apres le calcul\n");
                  while (continuer == 0)
                  {
                   scanf("%lf", &var1);
                   scanf("%lf", &var2);
                   resultat = produit(var1, var2);
                   printf("le resulat est : %lf\n", resultat);
                     printf("taper 1 pour revenir au menu precedent 0 pour continuer\n");
                   scanf("%ld", &continuer);
                   }
                   retour = 1;
                   break;
              case 4 :
                   printf("entrez chaque nombres suivi de entrer pour quitter taper 1 apres le calcul\n");
                  while (continuer == 0)
                  {
                   scanf("%lf", &var1);
                   scanf("%lf", &var2);
                   resultat = division(var1, var2);
                   printf("le resulat est : %lf\n", resultat);
                    printf("taper 1 pour revenir au menu precedent 0 pour continuer\n");
                   scanf("%ld", &continuer);
                   }
                 retour = 1;
                   break;
                   
              case 5 :
                   printf("entrez un nombre suivi de entrer pour quitter taper 1 apres le calcul\n");
                  while (continuer == 0)
                  {
                   scanf("%lf", &var1);
                             resultat = carre(var1);
                   printf("le resulat est : %lf\n", resultat);
                   printf("taper 1 pour revenir au menu precedent 0 pour continuer\n");
                   scanf("%ld", &continuer);
                   }
                   retour = 1;
                   break;
                   
                 case 6 :
              printf("entrez un nombre suivi de entrer pour quitter taper 1 apres le calcul\n");
                while (continuer == 0)
                  {
              scanf("%lf", &var1);
                          resultat = racine(var1);
            printf("le resulat est : %lf\n", resultat);
                  printf("taper 1 pour revenir au menu precedent 0 pour continuer\n");
                  scanf("%ld", &continuer);
                 }
                   retour = 1;
                   break;
              case 9 :
                   retour = 0;
                   break;
                   
              default :
                      printf("commande inconnue retour au menu\n");
                      retour = 1;
                      break;
                      }
                      }
                     
                   
                       
            system("PAUSE");
        return EXIT_SUCCESS;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      17 janvier 2006 à 20:47:47

      J'avoue, je ne voit aucune différence entre le case 5 et le case 6, mais pourtant, avant ce que je vais te dire, les symptômes que tu disait se produisait, et pas après...
      Essaie donc de cpoier TOUT ton case 5 et de remplacer ton case 6 par ce case 5... Ensuite, tu remplace ce deuxième case 5 en case 6 (en changeant juste le 5 en 6), puis tu remplace aussi le =carre(resultat) par = racine(resultat).
      Et alors, ça marchera. Donc il y a deux possibilités : soit je suis complètement miro et j'ai pas vu de différence alors qu'il y en a une. Soit c'est totalement pas normal. Tout ce que je sais, c'est que ma solutoin marche (et ce, sans que je comprenne pourquoi ... Vive l'informatique)
      • Partager sur Facebook
      • Partager sur Twitter
        18 janvier 2006 à 12:20:42

        non le probleme n'a pas été resolut, et pour ladifference entre le cas 5 et 6 c'est la fonction appeler comme le carré et la racine font appel à unsul nombre ca donne le meme code
        • Partager sur Facebook
        • Partager sur Twitter
          18 janvier 2006 à 16:27:51

          Euh ton code c'est du C ou du C++ car tu fais un using namespace std; mais tu utilises des printf ?

          De plus tes prototypes de fonction, mes les en haut de la fonction main et pas à l'interrieur
          • Partager sur Facebook
          • Partager sur Twitter
            18 janvier 2006 à 20:18:49

            cela ne change rien, puis vu que le programme marcher avec. Comme c'est avec l'ajout de la fonction racine que le probleme est arrivé, j'ai tenter de revenir au code precedent mais la aussi plus rien. Alors peut ^zetre que j'ai effacer un ; ou une acolade. Enfin j'ai bien tout reverifier et non tout me semble ok. j'ai essayé avec un do{}while(); Mais rien n'a faire. J'ai même tenter le else if lol... Donc voila si quelqu'un toruve...
            • Partager sur Facebook
            • Partager sur Twitter
              18 janvier 2006 à 20:26:11

              c'est quoi comme calculatrice ? une pour le lycée style casio graph 35+ ? ou Ti

              un conseil va voir sur ce forum (c'est pas de la pub)

              sinon j'ai regardé vite fait et je vois pas vraiment de probleme reregarde bien un petit detail oublié peut tout changer
              • Partager sur Facebook
              • Partager sur Twitter
                18 janvier 2006 à 20:38:48

                non c'est juste une petite calculatrice pour appliquer les cours. Sinonje me suis demander si unswitch avait des nombre de cas limités.
                • Partager sur Facebook
                • Partager sur Twitter
                  18 janvier 2006 à 22:05:03

                  Mais déclarer tes fonctions dans main()... faut pas s'attendre à ce que ça marche... tebonb l'a dit: ça se fait avant la focntion main() (les proto) et les fonctions elles-mêmes tu les définis après main(). Ou bien tu fais sans proto et tu les définis/déclares avant main().
                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 janvier 2006 à 20:49:39

                    ca vien pa des fonctions le programme s'execute normalmennt mais lla boule pourretouner au menu principal foire, elle se relance indefiniment apres la fin du premier calcul
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Probleme de boucle sur une calculatrice

                    × 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