Discussion:Textiles

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche

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;
}