Cod sursa(job #2137629)

Utilizator theodor.vladTheodor Vlad theodor.vlad Data 20 februarie 2018 22:28:45
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>

using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

int expresie();
int termen();
int factor();

char s[100005], *p;

int main()
{
	fin >> s;
	p = s;
	fout << expresie() << '\n';
	return 0;
}

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

int termen()
{
	int rez = factor();
	while (*p == '*' || *p == '/')
	{
		if (*p == '*')
		{
			++p;
			rez *= factor();
		}
		else if (*p == '/')
		{
			++p;
			rez /= factor();
		}
	}
	return rez;
}

int expresie()
{
	int rez = termen();
	while (*p == '+' || *p == '-')
	{
		if (*p == '+')
		{
			++p;
			rez += termen();
		}
		else if (*p == '-')
		{
			++p;
			rez -= termen();
		}
	}
	return rez;
}