Cod sursa(job #1971799)

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

int Expr(string ec, int &i);
int Factor(string ec, int &i);

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

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

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

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

int main(){

	string ec;
	cin >> ec;
	int i = 0;
	cout << Eval(ec, i);
	cin.close();
	cout.close();
	return 0;
}