Cod sursa(job #383472)

Utilizator taseTanase Alexandru tase Data 16 ianuarie 2010 17:36:17
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<stdio.h>
char *p,s[100005];
int expresie();
int factor();
int termen();

int expresie()
{
	int s=termen();
	while(*p=='+'||*p=='-')
	{
		if(*p=='+')
		{
			++p;
			s+=termen();
		}
		else
		{
			++p;
			s-=termen();
		}
	}
	return s;
}
int termen()
{
	int k;
	k=factor();
	while(*p=='*'||*p=='/')
		{
			if(*p=='*')
			{
				++p;
				k*=factor();
			}
			else
			{
				++p;
				k/=factor();
			}
		}
	return k;
}
int factor()
{
	int f=0,semn=1;
	if(*p=='(')
	{
		++p;
		f=expresie();
		++p;
		return f;
	}
	if(*p=='-')
	{
		semn=-1;
		++p;
	}
	while(*p>='0'&&*p<='9') {
								f=f*10+*p-'0';
								++p;}
	return semn*f;
}

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