Goldberg
Nouveau membre
Bonjour tt le monde, je débute ds la programmation en c. Ds un exercice on me demande de réaliser une calculatrice binaire du type permettant de réaliser des opérations du type :
3+8*20-85/2q, la chaine est de longueur variable et doit se finir par un q (q indique la fin du prog)
mon problème est le suivant : qd je mets un q à la fin de mon prog, celui-ci ne s'arrete pas directement..où pourrait se trouver mon erreur?
----------------------------------------------------------------
#include <stdio.h>
int main()
{
int c,e,a=0,b=0,f=0; // vaut mieux forcer à 0 sinon dans certains programmes on aura de mauvaises surprises
char t; //t représente +,-,*,/ ou ^
printf("entrez une serie de termes:\n");
scanf("%d",&a); //je prends le premier terme hors de la boucle
while (e!=1)
{
scanf("%c",&t); //je prends le premier caractère
scanf("%d",&b); //je prends le second terme
switch (t)
{
case '*':f=a*b;break; // discution de la valeur attribuée à f en fonction de la signification de t
case '/':f=a/b;break;
case '+':f=a+b;break;
case '-':f=a-b;break;
case '^':{c=1;
f=a;
while (c < b) {f=a*f,c=c+1;};};break;
case 'q':e=1;break;
};
a=f; //je donne à a la valeur de f et je recommence la boucle tant qu'un "q" n'apparrait pas (càd e=1)
printf("le resultat intermediaire vaut x=%d\n",f);
}; // fin du while
printf("le resultat final vaut x=%d\n",f); // en dehors du while le résultat final !!
return 0;
} //fin prog
3+8*20-85/2q, la chaine est de longueur variable et doit se finir par un q (q indique la fin du prog)
mon problème est le suivant : qd je mets un q à la fin de mon prog, celui-ci ne s'arrete pas directement..où pourrait se trouver mon erreur?
----------------------------------------------------------------
#include <stdio.h>
int main()
{
int c,e,a=0,b=0,f=0; // vaut mieux forcer à 0 sinon dans certains programmes on aura de mauvaises surprises
char t; //t représente +,-,*,/ ou ^
printf("entrez une serie de termes:\n");
scanf("%d",&a); //je prends le premier terme hors de la boucle
while (e!=1)
{
scanf("%c",&t); //je prends le premier caractère
scanf("%d",&b); //je prends le second terme
switch (t)
{
case '*':f=a*b;break; // discution de la valeur attribuée à f en fonction de la signification de t
case '/':f=a/b;break;
case '+':f=a+b;break;
case '-':f=a-b;break;
case '^':{c=1;
f=a;
while (c < b) {f=a*f,c=c+1;};};break;
case 'q':e=1;break;
};
a=f; //je donne à a la valeur de f et je recommence la boucle tant qu'un "q" n'apparrait pas (càd e=1)
printf("le resultat intermediaire vaut x=%d\n",f);
}; // fin du while
printf("le resultat final vaut x=%d\n",f); // en dehors du while le résultat final !!
return 0;
} //fin prog