Cod sursa(job #2828974)

Utilizator Radu_marioRadu Mario Radu_mario Data 8 ianuarie 2022 10:37:34
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>
using namespace std;

ifstream file_in("evaluare.in");
ofstream file_out("evaluare.out");

string expresie; 
stack<char> operatori; stack<int> operanzi;
int i, smallPriority(), mediumPriority(), bigPriority();

int smallPriority()
{
	int temp = mediumPriority();
	while (expresie[i] == '+' || expresie[i] == '-')
	{
		if (expresie[i] == '+') 
			++i, temp += mediumPriority();
		else 
			++i, temp -= mediumPriority();
	}
	return temp;
}

int mediumPriority()
{
	int temp = bigPriority();
	while (expresie[i] == '*' || expresie[i] == '/')
	{
		if (expresie[i] == '*')
			++i, temp *= bigPriority();
		else
			++i, temp /= bigPriority();
	}
	return temp;
}

int bigPriority()
{
	int temp = 0;

	if (expresie[i] == '(')
	{
		++i;
		temp = smallPriority();
		++i;
	}
	else
		while (isdigit(expresie[i]))
			temp = temp * 10 + (expresie[i] - '0'), ++i;

	return temp;
}

int main()
{
	file_in >> expresie;
	file_out << smallPriority();
	return 0;
}