Cod sursa(job #294707)

Utilizator spidyvenomMarius Toma spidyvenom Data 2 aprilie 2009 18:32:08
Problema Evaluarea unei expresii Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream.h>
#define max 1001
char s[max],*p=s;
ifstream f("evaluare.in");
ofstream g("evaluare.out");

long eval();

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

long termen()
{
long r=factor();
while (*p=='*' || *p=='/')
	{
	switch (*p)
		{
		case '*':
			++p;
			r*=factor();
			break;
		case '/':
			++p;
			r/=factor();
			break;
		}
	}
return r;
}

long eval()
{
long r=termen();
while (*p=='+' || *p=='-')
	{
	switch (*p)
		{
		case '+':
			++p;
			r+=termen();
			break;
		case '-':
			++p;
			r-=termen();
			break;
		}
	}
return r;
}

int main()
{
f.get(s,max);
g<<eval();
return 0;
}