Cod sursa(job #397588)

Utilizator BaduBadu Badu Badu Data 17 februarie 2010 10:42:41
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#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;
}