Cod sursa(job #1874844)

Utilizator petru.ciocirlanPetru Ciocirlan petru.ciocirlan Data 10 februarie 2017 14:46:51
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char S[100009], *p = S;

int evaluare();

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

int termen()
{
	int r = factor();
	while(*p == '*' || *p == '/')
		switch(*p)
		{
			case '*': ++p; r *= factor(); break;
			case '/': ++p; r /= factor(); break;
		}
	return r;
}

int evaluare()
{
	int r = termen();
	while(*p == '+' || *p == '-')
		switch(*p)
		{
			case '+': ++p; r += termen(); break;
			case '-': ++p; r -= termen(); break;
		}
	return r;
}

int main()
{
	f>>S;
	g<<evaluare();
    return 0;
}