Programmation calculatrice

j'ai un programme a faire sur calculatrice et les etapes sont :
-implémenter les operations arithmetiques courantes
-implémenter une interface graphique facile a utiliser
-lire une expression mathématique simple et la calculer
voila ce que j'ai fait pour le premier point et suis bloqué pour le reste pouvez vous m'aider a le faire
merci

#include<stdio.h>

main ()
{
int a,b,op;
float res;
printf("tape un nombre\n");
scanf("%d",&a);
printf("tape un nombre\n");
scanf("%d",&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;
}
}
return (0);}

}
Configuration: Windows XP
Internet Explorer 7.0

9 réponses

  1. bonjour
    alors d'abord tes if else imbriqués tu peux les remplacer par un switch si tu veux
    switch(op)
    case ..
    ..
    etc
    ou encore declarer op comme un caractere et faire
    if(op=='+') instruction
    if(op=='-') instruction
    etc

    et maintenant je vois pas sur quoi tu veux qu'on t'aide
    1. j'ai fait comme vous m'avez dit et ca marche parcontre je suis bloqué pour faire le reste une interface graphique facile a utiliser et lire une expression mathemetique simple et la calculer
      1. qu'es que tu entent par interface graphique
    2. pour l'expression arithmetiquetu peux la declarer comme une chaine de caractere et tu essaye de recuperer les valeurs une à une
      1. c'est ca justement que je ne comprend pas comment on le fait
        1. tu commences par declarer un tableau de caracteres dans lequel tu mettra l'expression arithmetique et aprés deux boucles suffiront pour recuperer les valeurs pour ensuite effectuer l'operartion souhaité
      2. si tu veux convertir un caractere en entier tu peux essayer
        char c;
        int x;
        if(c>='0' && c<='9'){
        x=c-'0';
        }

        je ne suis pas sure que ça marche mais essaye quand meme
        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;
          int main(int argc, char* argv[])
          {

          float a, b, res;
          char c;
          int x;
          if(c>='0' && c<='9'){
          x=c-'0';
          }

          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==+)
          {
          res=a+b;
          }
          else
          if(op==-)
          {
          res=a-b;
          }

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

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

          system("pause");

          return 0;

          }
        2. est ce que vous pouvez m'aider a corrigé 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. J'ai recemment fait un programme qui fait le meme chose et je crois que cela pourra t'interesse, et en passant je suis Nitsuj de Haiti.
            Amuses toi.


            /+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/

            #include<stdio.h>
            #include<conio.h>
            #include<math.h>
            main(){
            char x;
            float a,b,somme,difference,quotient,reste;
            clrscr();
            printf("Quel type de calcul aimeriez-vous faire?");
            scanf("%c",&x);
            printf("Entrez le premier element");
            scanf("%f",&a);
            printf("Entrez le second element");
            scanf("%f",&b);
            switch(x){
            case'+': printf("Vous avez choisi l'addition");
            somme=a+b;
            printf(" et la somme est:%f",somme);
            break;
            case '-': printf("Vous avez choisi la soustraction");
            difference=a-b;
            printf(" et la difference est:%f",difference);
            break;
            case '*': printf("Vous avez choisi la multiplication");
            quotient=a*b;
            printf(" et le quotient est:%f",quotient);
            break;
            case '/': printf("Vous avez choisi la division");
            reste=a/b;
            printf(" et le reste est:%f",reste);

            break;
            }
            getch();
            }