Cod sursa(job #531314)

Utilizator ChallengeMurtaza Alexandru Challenge Data 9 februarie 2011 13:50:24
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>

using namespace std;

const char InFile[]="evaluare.in";
const char OutFile[]="evaluare.out";
const int MaxN=100111;

ifstream fin(InFile);
ofstream fout(OutFile);

char str[MaxN],*p=str;

int termen();
int factor();
int eval();

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

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

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

int main()
{
	fin>>str;
	fin.close();
	
	fout<<eval();
	fout.close();
	return 0;
}