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. 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();
    }
    1. 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. #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. 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. 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. pour l'expression arithmetiquetu peux la declarer comme une chaine de caractere et tu essaye de recuperer les valeurs une à une
          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. 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