Cod sursa(job #395594)

Utilizator liv182copoiu liviu liv182 Data 13 februarie 2010 15:20:25
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<stdio.h>
#define N 1<<17
char v[N];
char *p;
int parsare();
int termen();
int calcule()
{
	int s=termen();
	while(*p=='+'|| *p=='-')
	if(*p=='+')
		{++p;s=s+termen();}
		else
			if(*p=='-')
				{++p;s=s-termen();}
				return s;

 }
 int termen()
 {
	int t=parsare();
	while(*p=='*' || *p=='/')
	if(*p=='*')
		{++p;t=t*parsare();}
			else
				if(*p=='/')
					{++p;t=t/parsare();}
					return t;
}
int parsare()
{
	int semn=1;
	int f=0;
	if(*p=='(')
	{
		++p;
		f=calcule();
		++p;
		return f;
	}
	if(*p=='-')
		semn=-1;
	while(*p>='0' && *p<='9') 
	{ 
	f = f*10 +*p - '0'; 
	++p;
	}
	return f*semn;
}
int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	fgets(v,N,stdin);
	p=v;
	int x=calcule();
	printf("%d",x);
	return 0 ;
}