Cod sursa(job #384119)

Utilizator andreii_93andrei ion andreii_93 Data 19 ianuarie 2010 10:26:18
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<cstdio>
char s[100010],*p=s;
int termen();
int factor();
int eval()
{
	int r=termen();
	while(*p=='+'||*p=='-')
		switch(*p)
		{
		case '+': ++p;r+=termen();break;
		case '-': ++p;r-=termen();break;
		}
	return r;
}

int termen()
{
	int r=factor();
	while(*p=='*'||*p=='/')
		switch(*p)
		{
		case '*': ++p;r*=factor();break;
		case '/': ++p;r/=factor();break;
		}
	return r;
}

int factor()
{
	int r=0;
	if(*p=='(')
	{
		++p;
		r=eval();
		++p;		
	}
	else 
		while(*p>='0'&&*p<='9')
		{
			r=r*10+*p-'0';
			++p;
		}
	return r; 
}

int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	fgets(s,100010,stdin);
	printf("%d",eval());
	return 0;
}