Pagini recente » Cod sursa (job #1227306) | Cod sursa (job #2661755) | Cod sursa (job #2756166) | Cod sursa (job #2466003) | Cod sursa (job #397588)
Cod sursa(job #397588)
#include<cstdio>
#include<cstring>
#define Lmax 2
#define max 100010
char S[max],*p=S;
char OP[3][3] = { "+-","*/","" };
int evaluare( int a, int b, char op){
switch( op ){
case '+' : return a+b;
case '-' : return a-b;
case '*' : return a*b;
case '/' : return a/b;
}
return 0;
}
int eval( int nivel ) {
int x,y;
if( nivel == Lmax ){
if( *p == '('){
++p;
x = eval(0);
++p;
}else
for( x=0 ; *p<='9' && *p >= '0' ; ++p) x = x*10 + *p - '0';
} else
for( x = eval( nivel + 1 ); strchr( OP[nivel], *p); x=y)
y = evaluare( x, eval(nivel+1), *p++);
return x;
}
int main(){
FILE *f = fopen("evaluare.in","r");
FILE *g = fopen("evaluare.out","w");
fgets ( S, max, f );
fprintf(g,"%ld\n",eval(0));
return 0;
}