Cod sursa(job #2203250)

Utilizator adriangh3Adrian Gheorghiu adriangh3 Data 11 mai 2018 18:12:42
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char expr[100001];
int i;

int eval();
int factori();
int inmultire();

int eval(void)
{
	int nr = inmultire();
	while (expr[i] == '+' || expr[i] == '-')
	{
		if (expr[i++] == '+') nr += inmultire();
		else nr -= inmultire();
	}
	return nr;
}

int inmultire(void)
{
	int nr = factori();
	while (expr[i] == '*' || expr[i] == '/')
	{
		if (expr[i++] == '*') nr *= factori();
		else nr /= factori();
	}
	return nr;
}

int factori(void)
{
	int nr = 0;
	if (expr[i] == '(')
	{
		i++;
		nr=eval();
		i++;
	}
	else for (; expr[i]>='0'&&expr[i]<='9'; i++) nr = nr * 10 + (expr[i]-'0');
	return nr;
}

int main()
{
	in >> expr;
	out<<eval();
	return 0;
}