Cod sursa(job #2882017)

Utilizator vladsipunct5555Butnrau Vlad vladsipunct5555 Data 31 martie 2022 09:18:13
Problema Evaluarea unei expresii Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in ("evaluare.in");
ofstream out ("evaluare.out");
string s;
int poz = 0;
int suma(), produs();
int make_number ()
{
	int k = 0;
	while (s[poz] <= '9' && s[poz] >= '0')
	{
		k = k * 10 + s[poz] - '0';
		poz++;
	}
	return k;
}
int eval ()
{
	int rez = 0;
	if (s[poz] == '(')
	{
		poz++;
		rez = suma();
		poz++;
	}
	else
		rez = make_number();
	return rez;
}
int suma ()
{
	int rez = produs();
	if (s[poz] == '+')
	{
		poz++;
		return rez + produs();
	}
	else if (s[poz] == '-')
	{
		poz++;
		return rez - produs();
	}
	return rez;
}
int produs ()
{
	int rez = eval();
	if (s[poz] == '*')
	{
		poz++;
		return rez * eval();
	}
	else if (s[poz] == '/')
	{
		poz++;
		return rez / eval();
	}
	return rez;
}
int main() 
{
	in >> s;
	out << suma();
    return 0;
}