Partage
  • Partager sur Facebook
  • Partager sur Twitter

calculatrice

addition, soustraction, multiplication et division

Sujet résolu
    14 juin 2006 à 15:44:59

    Citation : harry 84

    ca marche toujours pas, la variable resultat ne change pas de valeur. Ca m'affiche 0 quand j'appuie sur entré

    merci


    Le code que tu avais posté ne compilais pas. Avec quel code as-tu des problèmes ? (copié/collé, please...)
    • Partager sur Facebook
    • Partager sur Twitter
    Music only !
      14 juin 2006 à 16:03:11

      Tu définis des fonctions avec de int pour premierChiffre et deuxiemeChiffre, mais tu utilises long pour tes cariable premierChiffre et deuxiemeChiffre !

      Un conseil évite d'utiliser les mêmes noms pour les variables et les paramètres des fonctions : ça embrouille !
      • Partager sur Facebook
      • Partager sur Twitter
        14 juin 2006 à 18:16:15


        ...

        printf("quel mode desir tu \n 1 addition \2 soustraction \n3 multiplication");
        scanf("%ld", &calcule);

        ensuite tu fait un if comme ceci


        if(calcule = 1)
        {
        fonctionAddition(premierChiffre, deuxiemeChiffre);
        }
        else if(calcule = 2)
        {
        fonctionSoustraction(premierChiffre, deuxiemeChiffre);
        }
        else if(calcule = 3)
        {
        fonctionMulti(premierChiffre, deuxiemeChiffre);
        }

        ..






        Je lisais en diagonal le post et je vois une faute énorme, = dans un "if" :| Fait gaffe gameonlin ^^
        correction:


        if(calcule == 1) // ou if(calcule) ...
        {
        fonctionAddition(premierChiffre, deuxiemeChiffre);
        }
        else if(calcule == 2)
        {
        fonctionSoustraction(premierChiffre, deuxiemeChiffre);
        }
        else if(calcule == 3)
        {
        fonctionMulti(premierChiffre, deuxiemeChiffre);
        }

        ..

        • Partager sur Facebook
        • Partager sur Twitter
          14 juin 2006 à 18:38:26

          voici le code d'une calculette qui marche tres bien

          a par pour les nombre decimaux XD


          #include <iostream>
          double calculeAddition(double premierNombre,double deuxiemeNombre); //prototype
          double calculeSoustraction(double premierNombre,double deuxiemeNombre);//prototype
          double calculeMultiplication(double premierNombre,double deuxiemeNombre);//prototype


          int main()
          {
                  double  premierNombre = 0, deuxiemeNombre = 0, resultat = 0;
                  int calcule = 0; //on declare les variables
                  printf("quel est le choix de votre calcule \n 1 addition \n 2 soustraction \n 3 multiplication  : ");
                  scanf("%ld", &calcule); //on demande le choix d'operation
                  printf("premier nombre : ");
                  scanf("%ld", &premierNombre); //entrez le premier nombre
                  printf("deuxieme nombre : ");
                  scanf("%ld", &deuxiemeNombre); //entrez le deuxieme nombre

                  if(calcule == 1) //if qui envoi les parametre a la fonction qui lui convient
                  {
                      resultat = calculeAddition(premierNombre, deuxiemeNombre)//on recupere le return de la fonction
                      printf("%ld", resultat); // on affiche
              }
                  else if(calcule == 2)
                  {
                      resultat = calculeSoustraction(premierNombre, deuxiemeNombre);
                              printf("%ld", resultat);

                  }
                  else if(calcule == 3)
                  {
                      resultat = calculeMultiplication(premierNombre, deuxiemeNombre);
                              printf("%ld", resultat);

                  }
                  else
                  {
                      printf("vous n'avez pas entrez un mauvais nombre");
                  }
                  return 0;
          }
          double calculeAddition(double premierNombre,double deuxiemeNombre) //fonction addition
          {
              double resultat = 0;
              resultat = (premierNombre) + (deuxiemeNombre);
              return resultat;
          }

          double calculeSoustraction(double premierNombre,double deuxiemeNombre) //fonction soustraction
          {
              double resultat = 0;
              resultat = (premierNombre) - (deuxiemeNombre);
              return resultat;
          }

          double calculeMultiplication(double premierNombre,double deuxiemeNombre) //fonction multiplication
          {
              double resultat = 0;
              resultat = (premierNombre) * (deuxiemeNombre);
              return resultat;
          }

          created by GAMEONLI en 20 minute ^^
          • Partager sur Facebook
          • Partager sur Twitter
            14 juin 2006 à 19:06:31

            C'est l'organisation de ton code qui va pas. Essaye de voir pas à pas ce que fait l'ordinateur et tu verra ton problème.
            • Partager sur Facebook
            • Partager sur Twitter
              14 juin 2006 à 19:21:41

              pour le code que jai mis 2 post plus haut je me suis aperçut que la multiplication fonctionner pas pourquoi ??
              • Partager sur Facebook
              • Partager sur Twitter
                14 juin 2006 à 20:45:36


                #include <iostream>


                -> Pas du C

                Par contre moi je me pose une question. Plutôt que de poster un message dés que l'on a une erreur sur le code source, pourquoi ne pas le relire, et aller voir dans le cours de M@teo les différences existentes. Comme ca tu trouves tout seul les erreurs bêtes (ceci est mon avis)
                • Partager sur Facebook
                • Partager sur Twitter
                  14 juin 2006 à 21:10:42

                  Citation : gameonli


                  voici le code d'une calculette qui marche tres bien

                  a par pour les nombre decimaux XD


                          double  premierNombre = 0, deuxiemeNombre = 0, resultat = 0;
                  <...>
                              printf("%ld", resultat); // on affiche

                  Le format et le type ne concordent pas...
                              printf("%f", resultat); // on affiche

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Music only !
                    14 juin 2006 à 21:16:50

                    sa change rien a la multiplication qui marche pas o_O

                    tu as une idée ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 juin 2006 à 22:09:57


                      float entier1,entier2;
                      char type;
                      scanf("%f %c %f",&entier1,&type,&entier2);
                      if(type='+')
                      return entier1+entier2;
                      if (type='-')
                      return entier1-entier2;
                      if(type='*')
                      return entier1*entier2;
                      if(type='/') return entier1/entier2;
                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 juin 2006 à 22:29:20

                        Citation : Niak


                        float entier1,entier2;
                        char type;
                        scanf("%f %c %f",&entier1,&type,&entier2);
                        if(type='+')
                        return entier1+entier2;
                        if (type='-')
                        return entier1-entier2;
                        if(type='*')
                        return entier1*entier2;
                        if(type='/') return entier1/entier2;


                        Et les doubles égales ten fais quoi !
                        • Partager sur Facebook
                        • Partager sur Twitter
                          14 juin 2006 à 23:20:39

                          Citation : gameonli

                          sa change rien a la multiplication qui marche pas o_O

                          tu as une idée ?


                          Ben oui, il y a le même problème avec les 2 scanf()...

                             double premierNombre = 0, deuxiemeNombre = 0, resultat = 0;
                             <...>
                             scanf("%ld", &premierNombre); //entrez le premier nombre

                          C'est "%lf"...
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Music only !
                            15 juin 2006 à 8:30:49

                            ok merci jai regler le probleme ^^
                            • Partager sur Facebook
                            • Partager sur Twitter
                              15 juin 2006 à 19:02:54

                              bonjour à tous,

                              je ne sais pas pourquoi ca ne marche pas sinon j'aurais mis le bout de code qui bloque :)

                              j'ai rectifier les variables en mettant int et non long mais la variable resultat prend toujours 0 a la fin du code :(

                              le code :


                              #include <stdio.h>
                              #include <stdlib.h>


                              int main(int argc, char *argv[])
                              {
                                 
                                  //on déclare les variables
                                  int resultat = 0, calcule = 0, premierChiffre = 0, deuxiemeChiffre = 0;

                                 
                                  //la fonction multiplier
                              int fonctionMulti(int premierChiffre, int deuxiemeChiffre)
                              {
                                   resultat = premierChiffre * deuxiemeChiffre;
                              return resultat;
                              }


                              //la fonction soustraire
                              int fonctionSous(int premierChiffre, int deuxiemeChffre)
                              {
                              resultat = premierChiffre - deuxiemeChiffre;
                              return resultat;
                              }

                              //la fonction additionner
                              int fonctionAdd(int premierChiffre, int deuxiemeChiffre)
                              {
                              resultat = premierChiffre + deuxiemeChiffre;
                              return resultat;
                              }

                              //et enfin la fonction diviser
                              int fonctionDiv(int premierChiffre, int deuxiemeChiffre)
                              {
                              resultat = premierChiffre / deuxiemeChiffre;
                              return resultat;
                              }



                                printf("Que souhaitez vous faire ?\n1. Addition\n2.Soustraction\n3.Multiplication\n4.Division\n");
                                scanf("%ld", &calcule);
                               
                               
                                if(calcule == 3)
                                {
                                    fonctionMulti(premierChiffre, deuxiemeChiffre);
                                    }
                                   
                                    else if(calcule == 2)
                                    {
                                           fonctionSous(premierChiffre, deuxiemeChiffre);
                                           }
                                           
                                           
                                           else if(calcule == 1)
                                           {
                                                fonctionAdd(premierChiffre, deuxiemeChiffre);
                                                }
                                           
                                           
                                           else if(calcule == 4)
                                    {
                                           fonctionDiv(premierChiffre, deuxiemeChiffre);
                                           }
                                           
                                           
                                           else
                                           {
                                               printf("erreur");
                                               }
                                               
                                               printf("le calcul\n");
                                               scanf("%ld", &premierChiffre);
                                               scanf("%ld", &deuxiemeChiffre);
                                               printf("cela fait %ld\n", resultat);
                                               
                                               
                                system("PAUSE");     
                                return 0;
                              }


                              si vous savez pourquoi la variable resultat ne marche pas, merci de me le dire :)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                15 juin 2006 à 19:06:48

                                Tu appelles les fonctions AVANT que l'utilisateur rentre les nombres donc 0+0=0 ; 0-0=0 ; 0*0=0 ; 0/0=error !

                                Il faut mettre tes scanfs avant l'appel des fonctions !

                                De plus je te conseille de mettre plutôt des doubles que des int (pour les variable et les fonctions) sinon la fonction division ne renverra que la partie entière sur un nombre à virgule !
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  15 juin 2006 à 19:07:35

                                  Pourquoi tu demandes les valeurs après les calcules mais la demande avant tes if, et tu verras tous va marcher.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    15 juin 2006 à 19:29:57

                                    en fait, j'ai pas trop compris :euh:

                                    mon code en faisant ce que j'ai compris :



                                    #include <stdio.h>
                                    #include <stdlib.h>

                                    int main(int argc, char *argv[])
                                    {
                                         
                                       
                                       
                                       
                                       
                                        //on déclare les variables
                                        double
                                         resultat = 0, calcule = 0, premierChiffre = 0, deuxiemeChiffre = 0;


                                          //la fonction multiplier
                                    double fonctionMulti(double premierChiffre, double deuxiemeChiffre)
                                    {
                                        double resultat = 0;
                                         resultat = (premierChiffre) * (deuxiemeChiffre);
                                    return resultat;
                                    }


                                    //la fonction soustraire
                                    double fonctionSous(double premierChiffre, double deuxiemeChffre)
                                    {
                                       double resultat = 0;
                                         resultat = (premierChiffre) - (deuxiemeChiffre);
                                    }

                                    //la fonction additionner
                                    double fonctionAdd(double premierChiffre, double deuxiemeChiffre)
                                    {
                                       double resultat = 0;
                                         resultat = (premierChiffre) + (deuxiemeChiffre);
                                    }


                                    //et enfin la fonction diviser
                                    double fonctionDiv(double premierChiffre, double deuxiemeChiffre)
                                    {
                                       double resultat = 0;
                                         resultat = (premierChiffre) / (deuxiemeChiffre);
                                    }




                                     printf("le calcul\n");
                                                     scanf("%ld", &premierChiffre);
                                                     scanf("%ld", &deuxiemeChiffre);
                                                     printf("cela fait %ld\n", resultat);


                                       
                                       



                                      printf("Que souhaitez vous faire ?\n1. Addition\n2.Soustraction\n3.Multiplication\n4.Division\n");
                                      scanf("%ld", &calcule);
                                     
                                     
                                                       printf("le calcul\n");
                                                     scanf("%ld", &premierChiffre);
                                                     scanf("%ld", &deuxiemeChiffre);
                                                     printf("cela fait %ld\n", resultat);
                                                     
                                                     
                                      if(calcule == 3)
                                      {
                                          fonctionMulti(premierChiffre, deuxiemeChiffre);
                                          printf("%ld", resultat);
                                          }
                                         
                                          else if(calcule == 2)
                                          {
                                                 fonctionSous(premierChiffre, deuxiemeChiffre);

                                                 }
                                                 
                                                 
                                                 else if(calcule == 1)
                                                 {
                                                      fonctionAdd(premierChiffre, deuxiemeChiffre);

                                                      }
                                                 
                                                 
                                                 else if(calcule == 4)
                                          {
                                                 fonctionDiv(premierChiffre, deuxiemeChiffre);

                                                 }
                                                 
                                                 
                                                 else
                                                 {
                                                     printf("erreur");
                                                     }
                                                     
                                                 
                                             

                                                     
                                      system("PAUSE");     
                                      return 0;
                                    }







                                    mais le truc c'est que ca marche toujours pas :-°
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      15 juin 2006 à 19:40:12

                                      Mais là tu affiches le résultat avant de faire les opération !

                                      Il faut demander les chiffres à l'utilisateur ensuite tu fais 36+80 (c'est des exemple hein :p ) et enfin tu affiches 116 !
                                      Donc le printf ("le résultat est %ld !", resultat); se met après après l'appel des fonctions !
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        15 juin 2006 à 19:46:17

                                        je crois que je suis un vrai couyon moi :-°

                                        tu voudrais me donner le code avec la place des trucs parce que je comprend moi ( un vrai dindon, je vous dit, un vrai dindon...)
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          15 juin 2006 à 19:49:43

                                          Tiens :

                                          #include <stdio.h>
                                          #include <stdlib.h>


                                          int main(int argc, char *argv[])
                                          {

                                              //on déclare les variables
                                              int resultat = 0, calcule = 0, premierChiffre = 0, deuxiemeChiffre = 0;


                                              //la fonction multiplier
                                          int fonctionMulti(int premierChiffre, int deuxiemeChiffre)
                                          {
                                               resultat = premierChiffre * deuxiemeChiffre;
                                          return resultat;
                                          }


                                          //la fonction soustraire
                                          int fonctionSous(int premierChiffre, int deuxiemeChffre)
                                          {
                                          resultat = premierChiffre - deuxiemeChiffre;
                                          return resultat;
                                          }

                                          //la fonction additionner
                                          int fonctionAdd(int premierChiffre, int deuxiemeChiffre)
                                          {
                                          resultat = premierChiffre + deuxiemeChiffre;
                                          return resultat;
                                          }

                                          //et enfin la fonction diviser
                                          int fonctionDiv(int premierChiffre, int deuxiemeChiffre)
                                          {
                                          resultat = premierChiffre / deuxiemeChiffre;
                                          return resultat;
                                          }



                                            printf("Que souhaitez vous faire ?\n1. Addition\n2.Soustraction\n3.Multiplication\n4.Division\n");
                                            scanf("%ld", &calcule);

                                            printf("le calcul\n");
                                                           scanf("%ld", &premierChiffre);
                                                           scanf("%ld", &deuxiemeChiffre);


                                            if(calcule == 3)
                                            {
                                                fonctionMulti(premierChiffre, deuxiemeChiffre);
                                                }

                                                else if(calcule == 2)
                                                {
                                                       fonctionSous(premierChiffre, deuxiemeChiffre);
                                                       }


                                                       else if(calcule == 1)
                                                       {
                                                            fonctionAdd(premierChiffre, deuxiemeChiffre);
                                                            }


                                                       else if(calcule == 4)
                                                {
                                                       fonctionDiv(premierChiffre, deuxiemeChiffre);
                                                       }


                                                       else
                                                       {
                                                           printf("erreur");
                                                           }


                                                           printf("cela fait %ld\n", resultat);


                                            system("PAUSE");
                                            return 0;
                                          }


                                          Il marche normalement.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            15 juin 2006 à 20:00:00

                                            Bonjour déjà relis le cour de Mateo sur les fonctions ( car je pense que tu n'a pas trés bien compris leur principe) , et si tu veux faire une calculette avec uniquement les calculs de bases , tu n'est pas obliger d'utiliser des fonctions je m'explique ; Tu peux faire les calculs dans ta conditions :p . ( Je crois que c'est expliquer dans le cour de Mateo ).
                                            Je dis sa car ( je me repete) je ne crois pas que tu ait compris le principe des fonctions. ;)
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              15 juin 2006 à 20:04:35

                                              A ta place je n'aurais pas mis le code !
                                              On est pas censé coder à sa place mais l'aider !

                                              Ce n'est qu'une question de logique :
                                              Imagine que t'es avec un ami. Le but de la manoeurvre est de faire une opération parmi les 4 suivantes : addition, soustraction, multiplication, division, et à partir de deux nombres qu'il te donne au hasard !
                                              Comment vas-tu t'y prendre ?

                                              1.Demander l'opération
                                              2.Demander les nombres
                                              3.Prendre un papier et un crayon (ou une caltoch ou de tête) et effectuer le calcul
                                              4.Lui donner le résultat.

                                              Tu n'oserais pas donner le résultat avant même d'avoir effectuer le calcul tout de même ce serait de la magie !


                                              Edit :

                                              Citation : L'aigle

                                              Bonjour déjà relis le cour de Mateo sur les fonctions ( car je pense que tu n'a pas trés bien compris leur principe) , et si tu veux faire une calculette avec uniquement les calculs de bases , tu n'est pas obliger d'utiliser des fonctions je m'explique ; Tu peux faire les calculs dans ta conditions :p . ( Je crois que c'est expliquer dans le cour de Mateo ).
                                              Je dis sa car ( je me repete) je ne crois pas que tu ait compris le principe des fonctions. ;)


                                              Le but était aussi d'utiliser les fonctions ! Mais en effet il n'a pas compris leur principe je crois (enfin au niveau de l'appel de la fonction).
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                15 juin 2006 à 20:17:00

                                                il est vrai que je ne n'ai pas trop compris l'appel des fonctions et c'est pour ça que j'essaie de m'entrainer à faire des petits programmes qui servents à rien comme ça :D
                                                sinon pour ce qui est de l'ordre du code, vous avez raison, je n'ai pas assez réfléchi ^^

                                                mais merci pour tout :)
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  15 juin 2006 à 20:31:51

                                                  Et sinon c'est pas
                                                  fonctionMulti(premierChiffre, deuxiemeChiffre);
                                                  ( mais aussi les autres opérations ) mais c'est
                                                  resultat = fonctionMulti(premierChiffre, deuxiemeChiffre);
                                                  car il y a un return.
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    15 juin 2006 à 20:42:25

                                                    oui mais si je fait comme ca, je peut pas dire que ca doit effectuer *, -, +, etc, etc...

                                                    enfin je crois :euh:
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      15 juin 2006 à 22:58:12

                                                      Citation : harry 84


                                                      le code :


                                                      #include <stdio.h>
                                                      #include <stdlib.h>

                                                      int main(int argc, char *argv[])
                                                      {
                                                          //on déclare les variables
                                                          int resultat = 0, calcule = 0, premierChiffre = 0, deuxiemeChiffre = 0;
                                                         
                                                          //la fonction multiplier
                                                      int fonctionMulti(int premierChiffre, int deuxiemeChiffre)
                                                      {
                                                           resultat = premierChiffre * deuxiemeChiffre;
                                                      return resultat;
                                                      }



                                                      STOP ! Pas du C !

                                                      En C standard, on ne peut pas définir une fonction dans une fonction. Certains compilateur permettent ça, mais c'est une extension. Ca rend le code non portable.

                                                      Il faut definir les fonctions séparément :

                                                      f()
                                                      {
                                                      }

                                                      g()
                                                      {
                                                      }

                                                      h()
                                                      {
                                                      }
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      Music only !
                                                        15 juin 2006 à 23:03:29

                                                        De plus il m'a semblé voir que le code de formatage de scanf ne correspondait pas au type de la variable (%ld et int) %d pour int
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

                                                        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