Cod sursa(job #145340)

Utilizator maria_pparcalabescu maria daniela maria_p Data 28 februarie 2008 18:58:35
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<cstdio>
#define L 100010

long rez=0,i=0;
char s[L];
int elem();
int term();
int fact();

int elem(){
	int r=0;
	if(s[i]=='('){
		i++;
		r=term();
		i++;
	}
	else
		while(s[i]>='0' && s[i]<='9'){
			r=r*10+(s[i]-'0');
			i++;
		}
	return r;
}

int term(){
	int r=fact();
	while(s[i]=='+' || s[i]=='-')
		if(s[i]=='+')
			i++,r+=fact();
		else
			i++,r-=fact();
	return r;
}

int fact(){
	int r=elem();
	while(s[i]=='*' || s[i]=='/')
		if(s[i]=='*')
			i++,r*=elem();
		else
			i++,r/=elem();
	return r;
}

int main(){
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	fgets(s,L,stdin);
	rez=term();
	printf("%ld",rez);
	return 0;
}