Cod sursa(job #2356761)

Utilizator Catalin_BorzaBorza Catalin-Mihai Catalin_Borza Data 26 februarie 2019 21:29:05
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#define ll long long
using namespace std;

ifstream f("evaluare.in");
ofstream g("evaluare.out");

char expr[100001], c;

void nextc() { c = f.get(); };

ll exp1();
ll exp2();
ll exp3();

ll exp1() // +, -
{
	ll val = exp2();
	while (c == '+' || c == '-')
	{
		if (c == '+')
			nextc(),
			val += exp2();
		else
			nextc(),
			val -= exp2();
	}
	return val;
}

ll exp2()// *, /
{
	ll val = exp3();
	while (c == '*' || c == '/')
	{
		if (c == '*')
			nextc(),
			val *= exp3();
		else
			nextc(),
			val /= exp3();
	}
	return val;
}

ll exp3() // (, nr
{
	ll val = 0;
	if (c == '(')
	{
		nextc();
		val = exp1();
		nextc();
	}
	else while (c >= '0' && c <= '9')
	{
		val = val * 10 + (c - '0');
		nextc();
	}
	return val;
}

int main()
{
	nextc();
	g << exp1();
	return 0;
}