Cod sursa(job #2815940)

Utilizator victor_gabrielVictor Tene victor_gabriel Data 10 decembrie 2021 17:34:04
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>

using namespace std;

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

char s[100001];
int i;

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

int expresie()
{
	int r = termen();
	
	while (s[i] == '+' || s[i] == '-')
	{
		if (s[i] == '+')
		{
			i++;
			r += termen();
		}
		else
		{
			i++;
			r -= termen();
		}
	}

	return r;
}

int termen()
{
	int r = factor();
	
	while (s[i] == '*' || s[i] == '/')
	{
		if (s[i] == '*')
		{
			i++;
			r *= factor();
		}
		else
		{
			i++;
			r /= factor();
		}
	}

	return r;
}

int factor()
{
	int r = 0;

	if (s[i] == '(')
	{
		i++;
		r = expresie();
		i++;
	}
	else
	{
		while (s[i] >= '0' && s[i] <= '9')
		{
			r = r * 10 + (s[i] - '0');
			i++;
		}
	}

	return r;
}

int main()
{
	fin >> s;

	i = 0;
	fout << expresie();

	return 0;
}