Cod sursa(job #532030)

Utilizator osiceanu_paulOsiceanu paul osiceanu_paul Data 10 februarie 2011 18:29:53
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<stdio.h>

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

int termen()
{
	int r=factor();
	while(s[p]=='*' || s[p]=='/')
		if(s[p]=='/')
		{
			++p;
			r/=factor();
		}
		else
		{
			++p;
			r*=factor();
		}
		return r;
}
int factor()
{
	int r=0;
	if(s[p]=='(')
	{
		++p;
		r=expresie();
		++p;
		return r;
	}
	while(s[p]>='0' && s[p]<='9')
	{
		r=r*10+s[p]-'0';
		++p;
	}
	return r;
}





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