Cod sursa(job #169883)

Utilizator mihai0110Bivol Mihai mihai0110 Data 2 aprilie 2008 10:23:38
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<stdio.h>

char *p;
char s[100000];

int termen();
int factor();
int expresie();

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

int expresie()
{
	int r=termen();
	while(*p=='+'||*p=='-')
	{
		if(*p=='+')
		{
			p++;
			r+=termen();
		}
		else
		if(*p=='-')
		{
			p++;
			r-=termen();
		}
	}
	return r;
}

int termen()
{
	int r=factor();
	while(*p=='*'||*p=='/')
	{
		if(*p=='*')
		{
			p++;
			r*=factor();
		}
		else
		if(*p=='/')
		{
			p++;
			r/=factor();
		}
	}
	return r;
}

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