Cod sursa(job #525488)

Utilizator the@EyE@Postavaru Stefan the@EyE@ Data 25 ianuarie 2011 12:23:41
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <stdio.h>


using namespace std;

char S[100010],*p=S;

long eval();
long termen();
long factor();


long eval()
{
    long x=termen();
	while(*p=='+'||*p=='-')
	{
	if(*p=='+')
	{
		p++;
		x+=termen();
	}
	else if(*p=='-')
	{
		p++;
		x-=termen();
	}
	}
	return x;
}

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

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



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