Cod sursa(job #160632)

Utilizator gigi_becaliGigi Becali gigi_becali Data 16 martie 2008 13:50:30
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>
#include <string>
#define maxn 100001

int eval();
int termen();
int fact();
char a[maxn],*p;

inline int fact()
{
	int t=0;
	if(*p=='(')++p,t=eval(),++p;
	else
		for(;*p>='0' && *p<='9';++p) t=t*10+*p-'0';
	return t;
}

inline int termen()
{
	int t=fact();
	while(1)
	{
		if(*p == '*')++p,t*=fact();
		else if(*p == '/') ++p, t/=fact();
		else break;
	}
	return t;
}
inline int eval()
{
	int t=termen();
	while(1)
	{
		if(*p == '+') ++p,t+=termen();
		else if(*p == '-') ++p,t-=termen();
		else break;
	}
	return t;
}


int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	scanf("%s\n", &a);
	p=a;
	printf("%d\n", eval());
	return 0;
}