Cod sursa(job #1007971)

Utilizator andreiiiiPopa Andrei andreiiii Data 9 octombrie 2013 22:32:18
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>
using namespace std;

char a[100004];
char *p;

int termen();
int factor();

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

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

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

int main()
{
	freopen("evaluare.in", "r", stdin);
	freopen("evaluare.out", "w", stdout);
	fgets(a, 100004, stdin);
	p=a;
	printf("%d", eval());
}