Calculatrice

Bonjour,
qui peut me faire un programme en C qui permet de lire une expression mathematique simple et la calculer
Configuration: Windows XP
Internet Explorer 7.0

19 réponses

  • Votes
  • Date
  • Date décroissante
  1. salut
    je fais ce que vous m'avez dit mais ca ne marche pas
    1. dans ton main, tu n'as pas de printf ni de scanf indiquant (saisir le calcul...)

      à placer juste avant ton premier if
      1. a chaque fois que je compile ca me fait appui sur une touche pour continuer
        1. je l'ai fait c'est le derneir code que j'ai envoyé
          1. bon je vais essayer de faire le plus simple possible :

            QUAND TU LANCES LE PROGRAMME, QU'EST CE QUI MARCHE PAS ???
        2. y'a des erreurs sur mon code que j'arrive pas corriger
          1. 1/si y'a des erreurs à la compil, publie les
            2/qu'est ce qui marche pas PRECISEMMENT ?
        3. bonjour
          vous pouvez m'aider a corriger mes erreurs
          #include <stdio.h>
          #include <stdlib.h>
          #include <windows.h>
          #include <conio.h>

          float calcul(float operateur1, float operateur2, float operande);

          void demo_couleurs(void)
          {

          HANDLE h = GetStdHandle ( STD_OUTPUT_HANDLE );
          WORD wOldColorAttrs;
          CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
          GetConsoleScreenBufferInfo(h, &csbiInfo);
          wOldColorAttrs = csbiInfo.wAttributes;
          SetConsoleTextAttribute ( h, FOREGROUND_BLUE ); // on ecrit en bleu

          }

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

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

          float resultat,resultat_temp,resultat_temp1,resultat_temp2,resultat_temp3;
          float a,b,c,d,e;

          char op1,op2,op3,op4;

          demo_couleurs();

          if(argc > 9){
          printf("Nombre d'arguments doit etre inferieur à 9\n");

          }
          if(argc == 3) //deux operandes
          {
          scanf("%f%c%f",&a, &op1, &b);
          printf("%f %c %f\n", a, op1, b);
          // resultat = calcul(a, b, op1);
          }
          if(argc == 5) //trois operandes
          {
          if(op1 == '*' || op1 == '/'){
          scanf("%f%c%f%c%f",&a, &op1, &b);
          printf("%f %c %f %c %f\n", a, op1, b,op2,c);
          resultat_temp= calcul(a, b, op1);
          resultat = calcul(resultat_temp, c, op2);

          }else{
          if(op2 == '*' || op2 == '/'){
          resultat_temp = calcul(b, c, op2);
          resultat = calcul(a, resultat_temp, op2);
          }else {
          resultat_temp = calcul(a, b, op1);
          resultat = calcul(resultat_temp, c, op2);

          }

          }

          }

          if(argc == 7) //quatre operandes
          {
          if(op1 == '*' || op1 == '/')
          {
          scanf("%f%c%f%c%f%c%f",&a, &op1, &b,op2,c,op3,d);
          printf("%f %c %f %c %f %c %f\n", a, op1,b,op2,c,op3,d);
          resultat_temp1 = calcul(a, b, op1);
          resultat_temp2 = calcul(resultat_temp1, c, op2);
          resultat_temp = calcul(resultat_temp2, d, op3);

          }else{
          if(op2 == '*' || op2 == '/')
          {
          resultat_temp1 = calcul(b, c, op2);
          resultat_temp2 = calcul(a,resultat_temp1,op2);
          resultat_temp = calcul(resultat_temp2,d, op3);
          }else

          {
          resultat_temp1 = calcul(c,d, op3);
          resultat_temp2 = calcul(b,resultat_temp1,op2);
          resultat_temp = calcul(a,resultat_temp2,op3);

          }
          }

          }

          if(argc == 9) //cinq operandes
          {

          if(op1 == '*' || op1 == '/')
          {
          scanf("%f%c%f%c%f%c%f%c%f",&a, &op1, &b,op2,c,op3,d,op4,e);
          printf("%f %c %f %c %f %c %f %c %f\n", a, op1,b,op2,c,op3,d,op4,e);
          resultat_temp1 = calcul(a, b, op1);
          resultat_temp2 = calcul(resultat_temp1, c, op2);
          resultat_temp3 = calcul(resultat_temp2, d, op3);
          resultat_temp = calcul(resultat_temp3, e, op4);

          }else
          {
          if(op2 == '*' || op2 == '/')
          {
          resultat_temp1 = calcul(b, c, op2);
          resultat_temp2 = calcul(a,resultat_temp1, op1);
          resultat_temp3 = calcul(resultat_temp2,d, op3);
          resultat_temp = calcul(resultat_temp3,e, op4);

          }
          else

          {
          resultat_temp1 = calcul(c,d, op3);
          resultat_temp2 = calcul(b,resultat_temp1,op2);
          resultat_temp3 = calcul(a,resultat_temp2,op3);
          resultat_temp = calcul(resultat_temp3,e,op4);
          }
          }else

          {
          resultat_temp1 = calcul(d,e,op4);
          resultat_temp2 = calcul(c,resultat_temp1,op3);
          resultat_temp3 = calcul(b,resultat_temp2,op2);
          resultat_temp = calcul(a,resultat_temp3,op1);

          }else // nombre d'operandes invalides

          {

          printf("Nombre d'operandes invalides");
          }

          }
          }

          float calcul(float operateur1, float operateur2, float operande)
          {

          //void calcul(operateur1, operateur2, operande){
          if(op == '+'){
          retour = operateur1 + operateur2
          }
          if(op == '-'){
          retour = operateur1 - operateur2
          }
          if(op== '/'){
          retour = operateur1 / operateur2
          }
          if(op == '*'){
          retour = operateur1 * operateur2
          }

          return retour;
          }
          1. vous pouvez m'aider a corriger mes erreurs
            #include <stdio.h>
            #include <stdlib.h>
            #include <windows.h>
            #include <conio.h>

            float calcul(float operateur1, float operateur2, float operande);

            void demo_couleurs(void)
            {

            HANDLE h = GetStdHandle ( STD_OUTPUT_HANDLE );
            WORD wOldColorAttrs;
            CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
            GetConsoleScreenBufferInfo(h, &csbiInfo);
            wOldColorAttrs = csbiInfo.wAttributes;
            SetConsoleTextAttribute ( h, FOREGROUND_BLUE ); // on ecrit en bleu

            }

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

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

            float resultat,resultat_temp,resultat_temp1,resultat_temp2,resultat_temp3;
            float a,b,c,d,e;

            char op1,op2,op3,op4;

            demo_couleurs();

            if(argc > 9){
            printf("Nombre d'arguments doit etre inferieur à 9\n");

            }
            if(argc == 3) //deux operandes
            {
            scanf("%f%c%f",&a, &op1, &b);
            printf("%f %c %f\n", a, op1, b);
            // resultat = calcul(a, b, op1);
            }
            if(argc == 5) //trois operandes
            {
            if(op1 == '*' || op1 == '/'){
            scanf("%f%c%f%c%f",&a, &op1, &b);
            printf("%f %c %f %c %f\n", a, op1, b,op2,c);
            resultat_temp= calcul(a, b, op1);
            resultat = calcul(resultat_temp, c, op2);

            }else{
            if(op2 == '*' || op2 == '/'){
            resultat_temp = calcul(b, c, op2);
            resultat = calcul(a, resultat_temp, op2);
            }else {
            resultat_temp = calcul(a, b, op1);
            resultat = calcul(resultat_temp, c, op2);

            }

            }

            }

            if(argc == 7) //quatre operandes
            {
            if(op1 == '*' || op1 == '/')
            {
            scanf("%f%c%f%c%f%c%f",&a, &op1, &b,op2,c,op3,d);
            printf("%f %c %f %c %f %c %f\n", a, op1,b,op2,c,op3,d);
            resultat_temp1 = calcul(a, b, op1);
            resultat_temp2 = calcul(resultat_temp1, c, op2);
            resultat_temp = calcul(resultat_temp2, d, op3);

            }else{
            if(op2 == '*' || op2 == '/')
            {
            resultat_temp1 = calcul(b, c, op2);
            resultat_temp2 = calcul(a,resultat_temp1,op2);
            resultat_temp = calcul(resultat_temp2,d, op3);
            }else

            {
            resultat_temp1 = calcul(c,d, op3);
            resultat_temp2 = calcul(b,resultat_temp1,op2);
            resultat_temp = calcul(a,resultat_temp2,op3);

            }
            }

            }

            if(argc == 9) //cinq operandes
            {

            if(op1 == '*' || op1 == '/')
            {
            scanf("%f%c%f%c%f%c%f%c%f",&a, &op1, &b,op2,c,op3,d,op4,e);
            printf("%f %c %f %c %f %c %f %c %f\n", a, op1,b,op2,c,op3,d,op4,e);
            resultat_temp1 = calcul(a, b, op1);
            resultat_temp2 = calcul(resultat_temp1, c, op2);
            resultat_temp3 = calcul(resultat_temp2, d, op3);
            resultat_temp = calcul(resultat_temp3, e, op4);

            }else
            {
            if(op2 == '*' || op2 == '/')
            {
            resultat_temp1 = calcul(b, c, op2);
            resultat_temp2 = calcul(a,resultat_temp1, op1);
            resultat_temp3 = calcul(resultat_temp2,d, op3);
            resultat_temp = calcul(resultat_temp3,e, op4);

            }
            else

            {
            resultat_temp1 = calcul(c,d, op3);
            resultat_temp2 = calcul(b,resultat_temp1,op2);
            resultat_temp3 = calcul(a,resultat_temp2,op3);
            resultat_temp = calcul(resultat_temp3,e,op4);
            }
            }else

            {
            resultat_temp1 = calcul(d,e,op4);
            resultat_temp2 = calcul(c,resultat_temp1,op3);
            resultat_temp3 = calcul(b,resultat_temp2,op2);
            resultat_temp = calcul(a,resultat_temp3,op1);

            }else // nombre d'operandes invalides

            {

            printf("Nombre d'operandes invalides");
            }

            }
            }

            float calcul(float operateur1, float operateur2, float operande)
            {

            //void calcul(operateur1, operateur2, operande){
            if(op == '+'){
            retour = operateur1 + operateur2
            }
            if(op == '-'){
            retour = operateur1 - operateur2
            }
            if(op== '/'){
            retour = operateur1 / operateur2
            }
            if(op == '*'){
            retour = operateur1 * operateur2
            }

            return retour;
            }
            1. le programme que vous avez fait a plein d'erreurs est ce que vous pouvez les corrigé car j'ai essayé mais ca ne marche pas
              1. #include <stdio.h>
                #include <stdlib.h>
                #include <windows.h>
                #include <conio.h>
                int wait4key(void);

                void demo_ASCII_extended();

                void demo_couleurs(void);
                HANDLE h = GetStdHandle ( STD_OUTPUT_HANDLE );
                WORD wOldColorAttrs;
                CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
                GetConsoleScreenBufferInfo(h, &csbiInfo);
                wOldColorAttrs = csbiInfo.wAttributes;
                int main(int argc, char* argv[])
                {

                float N1,N2;
                float resultat;
                int op;
                float a, b, res;
                printf("tape un nombre\n");
                scanf(" %f",&a);
                printf("tape un nombre\n");
                scanf(" %f",&b);
                printf("tape 1\t pour + \n tape 2 \t pour - \n tape 3 \t pour * \n tape 4 pour /\n");
                scanf(" %d",&op);
                if(op==1)
                {
                res=a+b;
                }
                else
                if(op==2)
                {
                res=a-b;
                }

                else
                if(op==3)
                {
                res=a*b;
                }

                else
                {
                res=(float)a/(float)b;
                }
                printf("le resultat est %f\n",res);

                printf("\t*---* *---* *---*\n");
                printf("\t| 9 | | 8 | | 7 |\n");
                printf("\t*---* *---* *---*\n");
                printf("\t*---* *---* *---*\n");
                printf("\t| / | | * | | 6 |\n");
                printf("\t*---* *---* *---*\n");
                printf("\t*---* *---* *---*\n");
                printf("\t| 5 | | 4 | | - |\n");
                printf("\t*---* *---* *---*\n");
                printf("\t*---* *---* *---*\n");
                printf("\t| 3 | | 2 | | + |\n");
                printf("\t*---* *---* *---*\n");
                printf("\t*---* *---* *---*\n");
                printf("\t| 1 | | 0 | | |\n");
                printf("\t*---* *---* *---*\n");

                system("pause");
                return 0;
                }
                je dois creer un outil qui permet de faire des calculs simples:
                -implémenter les operations arithmetiques courantes
                -implémenter une interface graphique faciles à utiliser
                -et en fin lire une expression mathematique et la calculer
                1. Contributeur
                  #include <stdlib.h>
                  #include <stdio.h>
                  #include <string.h>
                  #include <math.h>
                  
                  char *nb1;
                  char *nb2;
                  double double1,double2;
                  char *op;
                  
                  printf("Nombre1 : ");
                  scanf("%s", nb1);
                  printf("Opérateur : ");
                  scanf("%s", op);
                  printf("Nombre1 : ");
                  scanf("%s", nb1);
                  
                  double1 = atof(nb1);
                  double2 = atof(nb2);
                  
                  if (!strcasecmp(op, "+")){
                  printf("%e\n", double1 + double2);
                  }else if (!strcasecmp(op, "-")){
                  printf("%e\n", double1 - double2);
                  }else if (!strcasecmp(op, "%")){
                  printf("%e\n", fmod(double1,double2));
                  }else if (!strcasecmp(op, "*")){
                  printf("%e\n", double1 * double2);
                  }else if (!strcasecmp(op, "/")){
                  if (double2 != 0){
                  printf("%e\n", double1 + double2);
                  }else{
                  printf("Division par zero\n");
                  }
                  }
                  

                  Ne pas oublier de faire l'édition des liens avec -lm
                  1. #include <stdio.h>
                    #include<stdlib.h>
                    #include <windows.h>
                    #include <conio.h>
                    int wait4key(void);
                    float N1,N2;
                    float resultat
                    char op=+
                    printf("tapez le premier nombre\n");
                    scanf(" %f", &N1");
                    printf("tapez le second nombre\n");
                    scanf(" %f, &N2");
                    float resultat=N1+N2
                    printf("la somme de%f et de %f donne %f",resultat);

                    ca ne marche pas
                    1. t'as 2 choix :

                      1/facile

                      tu poses 3 questions :
                      -premier nombre ?
                      -opération (+,-,*,/,^,%) ?
                      - deuxième nombre ?
                      et suivant les réponses, tu calcules ton truc

                      2/plus difficile
                      -l'utilisateur tape sa formule (par ex 2+2)
                      et là tu vérifie pour chaque caractères s'il s'agit d'un nombre, d'une lettre qui n'a rien à faire là, d'un espace,d'un opérateur, etc... et tu fais ton ptit bazar après
                      1. rajoute cequ'il y'a en gras dans ton code

                        ça fait une addition de N1 + N2
                        1. #include <stdio.h>
                          #include<stdlib.h>
                          #include <windows.h>
                          #include <conio.h>
                          int wait4key(void);
                          float N1,N2;
                          float resultat
                          printf("la somme de %f et de %f donne %f",N1, N2)

                          et la suis bloqué
                          1. float resultat ;
                            resultat = N1 + N2

                            printf("la somme de %f et de %f donne %f",N1, N2,resultat)