Pagini recente » Cod sursa (job #3137799) | Cod sursa (job #962447) | Cod sursa (job #1090278) | Cod sursa (job #3139626) | Cod sursa (job #2882018)
#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();
while (s[poz] == '+' || s[poz] == '-')
if (s[poz] == '+')
{
poz++;
rez += produs();
}
else if (s[poz] == '-')
{
poz++;
rez -= produs();
}
return rez;
}
int produs ()
{
int rez = eval();
while (s[poz] == '*' || s[poz] == '/')
if (s[poz] == '*')
{
poz++;
rez *= eval();
}
else if (s[poz] == '/')
{
poz++;
rez /= eval();
}
return rez;
}
int main()
{
cin >> s;
cout << suma();
return 0;
}