Cod sursa(job #301860)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 8 aprilie 2009 14:54:15
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <cstdio>
#include <cstring>

using namespace std;

#define Nmax 100100

int n,p;
char s[Nmax];

int unu();
int doi();
int trei();

inline int unu()
{
	int aux=0;
	if (s[p]=='(')
	{
		p++;
		aux=doi();
		p++;
		return aux;
	}
	while(s[p]>='0' && s[p]<='9')
	{
		aux=aux*10+s[p]-'0';
		p++;
	}
	return aux;
}

inline int doi()
{
	int aux=trei();
	while(s[p]=='+' || s[p]=='-')
	{
		if (s[p]=='+')
		{
			p++;
			aux+=trei();
		}
		else
		if (s[p]=='-')
		{
			p++;
			aux-=trei();
		}
	}
	return aux;
}

inline int trei()
{
	int aux=unu();
	while(s[p]=='*' || s[p]=='/')
	{
		if (s[p]=='*')
		{
			p++;
			aux*=unu();
		}
		else
		if (s[p]=='/')
		{
			p++;
			aux/=unu();
		}
	}
	return aux;
}
	

int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	
	gets(s);
	p=0;
	printf("%d", doi());
	return 0;
}