Cod sursa(job #413164)

Utilizator OdinSandu Bogdan-Mihai Odin Data 7 martie 2010 20:58:32
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>
char s[100010],*p=s+1; 
int sub2();
int sub3();
int sub1()
{
	int r=sub2();
	while(*p=='+'||*p=='-')
	{
		if(*p=='+')
		{
			++p;
			r+=sub2();
		}
		if(*p=='-')
		{
			++p;
			r-=sub2();
		}
	}
	return r;
}
int sub2()
{
	int r=sub3();
	while(*p=='*'||*p=='/')
	{
		if(*p=='*')
		{
			++p;
			r*=sub3();
		}
		if(*p=='/')
		{
			++p;
			r/=sub3();
		}
	}
	return r;
}
int sub3()
{
	int r=0;
	if(*p=='(')
	{
		++p;
		r=sub1();
		++p;
	}
	else while('0'<=*p&&*p<='9')
	{
		r=r*10+*p-'0';
		++p;
	}
	return r;
}
int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	scanf("%s",s+1);
	printf("%d",sub1());
	return 0;
}