Cod sursa(job #294704)

Utilizator spidyvenomMarius Toma spidyvenom Data 2 aprilie 2009 18:30:37
Problema Evaluarea unei expresii Scor 0
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");

int eval();

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

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

int eval()
{
int 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);
cout<<eval();
return 0;
}