Cod sursa(job #2720490)

Utilizator FrostfireMagirescu Tudor Frostfire Data 10 martie 2021 21:36:07
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int idx = 0;
string s;

int suma();
int produs();
int termen();

int suma()
{	int ans = produs();
	while(s[idx] == '+' || s[idx] == '-')
		{	if(s[idx] == '+')
				{	idx++;
					ans = ans + produs();
				}
			else
				{	idx++;
					ans = ans - produs();
				}
		}
	return ans;
}

int produs()
{	int ans = termen();
	while(s[idx] == '*' || s[idx] == '/')
		{	if(s[idx] == '*')
				{	idx++;
					ans = ans * termen();
				}
			else
				{	idx++;
					ans = ans / termen();
				}
		}
	return ans;
}

int termen()
{	int ans = 0;
	if(s[idx] == '(')
		{	idx++;
			ans = suma();
			idx++;
		}
	else
		{	while(s[idx] >= '0' && s[idx] <= '9')
				{	ans = ans * 10 + s[idx] - '0';
					idx++;
				}
		}
	return ans;
}

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