Cod sursa(job #551023)

Utilizator pirvupirvu tudor pirvu Data 10 martie 2011 11:28:41
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<cstdio>
int p;
char s[100001];
int factor () , termen() , expresie();

int factor ( )
{
	int semn=1 , val=0;
	
	if ( s[p] == '-' )
	{
		semn=-1; 
		p++;
	}
	if (s[p]=='(')
	{
		p++;
		val=expresie();
		p++;
		return val;
	}
	
	while ( p[s]>='0' && p[s]<='9' )
	{
		val=val*10+p[s]-'0';
		p++;		
	}
	return val;	
}

int termen()
{
	int prod=factor();
	
	while ( s[p] == '*' || s[p] == '/'  ) 
		if ( s[p] == '*' )
		{
			++p;
			prod*=factor();
		}
		else
		{
			++p;
			prod/=factor();	
		}
	return prod;
}


int expresie ( )
{
	int sum=termen();
	
	while (s[p]=='+' || s[p]=='-')
		if ( s[p]=='+')
		{
			++p;
			sum+=termen();	
		}
		else
		{
			++p;
			sum-=termen();
		}
	return sum;
}





int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	
	gets(s);

	
	printf("%d", expresie() );
	
	
	return 0;
}