Cod sursa(job #160628)

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

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

inline int fact()
{
	int t=0;
	if(*p=='('){ ++p;t=eval();++p;}
	else
		for(;*p>=0 && *p<=9;++p) 
			t=t*10+*p-'0';
	//printf("%d\n",t);
	return t;
}

inline int termen()
{
	int t=fact();
	while(*p == '*' || *p == '/')
	{
		if(*p == '*'){++p; t*=fact();}
		else if(*p == '/') {++p; t/=fact();}
	//	else break;
	}
	return t;
}
inline int eval()
{
	int t=termen();
	while(*p == '+' || *p == '-')
	{
		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;
}