Cod sursa(job #289674)

Utilizator cotofanaCotofana Cristian cotofana Data 26 martie 2009 21:36:40
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <stdio.h>
#define dim 100010

char s[dim], *p=s;

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

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

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

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

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