Discussion:Textiles
je avoir un programme en langage c pour l'evaluation des expression arithmetique et logique
- Vous voulez diffuser un tel programme ou vous rechercher un programme qui permet d'évaluer des expressions arithmétiques ? Pouvez vous donner un exemple d'expression. Merci Merrheim 7 février 2006 à 18:29 (UTC)
- Sur l'évaluation des expressions arithmétiques (je ne sais pas si c'est cela que vous recherchez), j'ai ce programme en réserve :
#include <stdio.h> #include<stdlib.h> int getInt(char **s,int *val) { int signe=1; while(**s =='+' || **s=='-'){if(**s=='-')signe=-signe;*s=*s+1;} *val=0; while(**s<='9' && **s>='0'){*val=*val*10+signe*(**s-'0');*s=*s+1;} if(*val==0)return -1; else return 0; } int eval(char **s,int *val,int level) { int val2,e; if(level==0) { if(**s!='(') return getInt(s,val); else { *s=*s+1; if(eval(s,val,2)!=0)return -1; if(**s==')'){*s=*s+1;return 0;} else return -1; } } else if(level==1) { if(eval(s,val,0)!=0)return -1; if(**s=='*'){*s=*s+1;e=eval(s,&val2,1);*val=*val*val2;return e;} return 0; } else if(level==2) { if(eval(s,val,1)!=0)return -1; if(**s=='+'){*s=*s+1;e=eval(s,&val2,2);*val=*val+val2;return e;} else if(**s=='-'){*s=*s+1;e=eval(s,&val2,2);*val=*val-val2;return e;} return 0; } } int evaluate(char **s,int *val) { int e= eval(s,val,2); if(e==-1 ||**s!='\0')return -1; else return 0; } int main(int argc, char *argv[]) { char c[1000]; int e,v; char *p; p=c; printf( "Tapez une expression : "); scanf("%s",c); e=evaluate(&p,&v); if(e==0)printf ("L'expression vaut %i\n",v); else printf("erreur\n"); system("PAUSE"); return 0; }