Cod sursa(job #3260264)

Utilizator EricDimiericdc EricDimi Data 1 decembrie 2024 12:51:55
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <bits/stdc++.h>

using namespace std;

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

int poz = 0;
string eval;

int factor();
int termen();

int evaluare()
{
	int rez = termen();
	while (eval[poz] == '-' || eval[poz] == '+')
	{
		if (eval[poz] == '-')
		{
			poz++;
			rez -= termen();
		}
		else
		if (eval[poz] == '+')
		{
			poz++;
			rez += termen();
		}
	}
	return rez;
}

int termen()
{
	int fact = factor();
	while (eval[poz] == '*' || eval[poz] == '/')
	{
		if (eval[poz] == '*')
		{
			poz++;
			fact *= factor();
		}
		else
		if (eval[poz] == '/')
		{
			poz++;
			fact /= factor();
		}
	}
	return fact;
}

int factor()
{
	long long rez = 0;
	if (eval[poz] == '(')
	{
		poz++;
		rez = evaluare();
		poz++;
	}
	else
	{
		while (eval[poz] >= '0' && eval[poz] <= '9')
		{
			rez = rez * 10 + (eval[poz] - '0');
			poz++;
		}
	}
	return rez;
}

int main()
{
	f >> eval;
	g << evaluare() << '\n';

	f.close();
	g.close();
	return 0;
}