Cod sursa(job #1971804)

Utilizator Robert29FMI Tilica Robert Robert29 Data 20 aprilie 2017 22:52:59
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<string>
#include<fstream>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");

int Expr();
int Factor();
string ec;
int i;
int Eval()
{
	int nr = Expr();

	while(ec[i] == '+' || ec[i] == '-')
	{
		if(ec[i] == '+')
		{
			++i;
			nr += Expr();
		}
		else
		{
			++i;
			nr -= Expr();
		}
	}
	return nr;
}

int Expr()
{
	int nr = Factor();
	while(ec[i] == '*' || ec[i] == '/')
	{
		if(ec[i] == '*')
		{
			++i;
			nr *= Factor();
		}
		else
		{
			++i;
			nr /= Factor();
		}
	}
	return nr;
}

int Factor()
{
	int nr = 0;
	if(ec[i] == '(')
	{
		++i;
		nr = Eval();
		++i;
	}
	else
	{
		while(ec[i] >= '0' && ec[i] <= '9')
		{
			nr = nr * 10 + ec[i] - '0';
			++i;
		}
	}
	return nr;
}

int main(){
	cin >> ec;
	cout << Eval();
	cin.close();
	cout.close();
	return 0;
}