Cod sursa(job #3237818)

Utilizator 0021592Grecu rares 0021592 Data 13 iulie 2024 13:55:45
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>
#include <string>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
string e;
int i, j;
int inside_expresie();
void second_ops(int& x);
int getnumber();
int inside_expresie()
{
	int x;
	if (e[i] == '(')
	{
		i++;
		x = inside_expresie();
	}
	else
		x = getnumber();
	while (e[i] != ')' && i < e.size())
	{
		second_ops(x);
		if (e[i] == '+' || e[i] == '-')
		{
			int bs = e[i] == '+';
			i++;
			int y = getnumber();
			second_ops(y);
			if (bs == 1)
				x += y;
			else
				x -= y;
		}
	}
	i++;
	return x;
}
void second_ops(int& x)
{
	if (e[i] != '*' && e[i] != '/')
		return;
	bool b = e[i] == '*';
	i++;
	int y;
	if (e[i] == '(')
		y = inside_expresie();
	else
		y = getnumber(); ///getnumber e caz special al inside_expresie(), cand expresia este denaturalizata (are un singur termen - variabila)
	if (b == 0)
		x = x / y;
	else
		x = x * y;
	second_ops(x);
}
int getnumber()
{
	int x = 0;
	while (e[i] >= '0' && e[i] <= '9')
	{	
		x = x * 10 + (e[i] - '0');
		i++;
	}
	return x;
}
int main()
{
	in >> e;
	out << inside_expresie();
}