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. #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)
  2. rajoute cequ'il y'a en gras dans ton code

    ça fait une addition de N1 + N2
    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. #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. 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);

            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. 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. 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. 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. 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 ?
                  2. 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 ???
                  3. a chaque fois que je compile ca me fait appui sur une touche pour continuer
                    1. dans ton main, tu n'as pas de printf ni de scanf indiquant (saisir le calcul...)

                      à placer juste avant ton premier if