Cod sursa(job #349490)

Utilizator Alexa_ioana_14Antoche Ioana Alexandra Alexa_ioana_14 Data 19 septembrie 2009 19:35:30
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<cstdio>
#define N 100001
char s[N],*p;
int eval();
int termen();
int factor();
void citire()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	fgets(s,N,stdin);
	p=s;
}
int termen()
{
	int r=0;
	if (*p=='(')
	{
		++p;
		r=eval();
		++p;
	}
	while (*p>='0'&&*p<='9')
	{
		r=r*10+(*p)-'0';
		++p;
	}
	return r;
}
int factor()
{
	int r=termen();
	while (*p=='*'||*p=='/')
		if (*p=='*')
		{
			++p;
			r*=termen();
		}
		else
		{
			++p;
			r/=termen();
		}
	return r;
}
int eval()
{
	int r=factor();
	while (*p=='+'||*p=='-')
		if (*p=='+')
		{
			++p;
			r+=factor();
		}
		else
		{
			++p;
			r-=factor();
		}
	return r;
}
int main()
{
	citire();
	printf("%d",eval());
	return 0;
}