Cod sursa(job #524440)

Utilizator Eugen01Vasilescu Eugen Eugen01 Data 21 ianuarie 2011 15:29:40
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<Stdio.h>
#include<String.h>

char s2[100100],*p=s2;
int nr,i,j,k,n,m;


int eval();
int f();
int t();

int eval()
{
	int s=t();
	
	while (*p=='+'||*p=='-')
	{
		if (*p=='+')
		{
			p++;
			s+=t();
		}
		else
		{
			p++;
			s-=t();
		}
	}
	return s;
};

int t()
{
	int s=f();
	while (*p=='*'||*p=='/')
	{
		if (*p=='*')
		{
			p++;
			s*=f();
		}
		else
		{
			p++;
			s/=f();
		}
	}
	return s;	
};

int f()
{
	int nr;
	if (*p=='(')
	{
		p++;
		nr=eval();
		p++;
	}
	else 
	{
		nr=0;
		while (*p>='0'&&*p<='9')
		{
			nr=nr*10+*p-'0';
			p++;
		}
	}
	return nr;
};



int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	
	gets(s2);
	
	printf("%d\n",eval());
	
	return 0;
}