Cod sursa(job #352347)

Utilizator mottyMatei-Dan Epure motty Data 1 octombrie 2009 12:42:16
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<cstdio>

const int N=100001;

char v[N],*p=v;

int termen();
int factor();

int eval()
{
	int r=termen();
	while( *p=='+' || *p=='-' )
	{
		if(*p=='+')
		{
			p++;
			r+=termen();
		}
		else if(*p=='-')
		{
			p++;
			r-=termen();
		}
	}
	return r;
}

int termen()
{
	int r=factor();
	while( *p=='*' || *p=='/' )
	{
		if(*p=='*')
		{
			p++;
			r*=factor();
		}
		if(*p=='/')
		{
			p++;
			r/=factor();
		}
	}
	return r;
}

int factor()
{
	int r=0;
	if(*p=='(')
	{
		p++;
		r=eval();
		p++;
	}
	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(v,N,stdin);
	printf("%d\n",eval());
	return 0;
}