Cod sursa(job #1874837)

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

int factor();
int termen();
int evaluare();

int factor()
{
	int r = 0;
	if(*p == '(')
	{
		++p;
		r = evaluare();
		++p;
	}
	else
		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;
}