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

  1. t'as essayé de faire quoi pour l'instant ?
    0
    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é
      0
      1. float resultat ;
        resultat = N1 + N2

        printf("la somme de %f et de %f donne %f",N1, N2,resultat)
        0
    2. je ne comprend pas ce que vous m'avez envoyé
      0
      1. rajoute cequ'il y'a en gras dans ton code

        ça fait une addition de N1 + N2
        0
        1. ca ne me permet pas de lire une expression mathematique
          0
          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
            0
            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
              0
              1. met

                float resultat=N1+N2;

                à l'avant dernière ligne
                0
                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
                  0
                  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
                    0
                    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
                      0
                      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;
                        }
                        0
                        1. 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;
                          }
                          0
                          1. y'a des erreurs sur mon code que j'arrive pas corriger
                            0
                            1. 1/si y'a des erreurs à la compil, publie les
                              2/qu'est ce qui marche pas PRECISEMMENT ?
                              0
                          2. je l'ai fait c'est le derneir code que j'ai envoyé
                            0
                            1. bon je vais essayer de faire le plus simple possible :

                              QUAND TU LANCES LE PROGRAMME, QU'EST CE QUI MARCHE PAS ???
                              0
                          3. a chaque fois que je compile ca me fait appui sur une touche pour continuer
                            0
                            1. dans ton main, tu n'as pas de printf ni de scanf indiquant (saisir le calcul...)

                              à placer juste avant ton premier if
                              0
                              1. salut
                                je fais ce que vous m'avez dit mais ca ne marche pas
                                0