Pagini recente » Cod sursa (job #1669284) | Cod sursa (job #233813) | Cod sursa (job #2088421) | Cod sursa (job #908920) | Cod sursa (job #2734014)
#include <bits/stdc++.h>
using namespace std;
#ifndef LOCAL
ifstream in("evaluare.in");
ofstream out("evaluare.out");
#define cin in
#define cout out
#endif //LOCAL
int suma();
int prod();
int term();
string s;
int sIndex = 0;
int suma()
{
int ret = prod();
char op = s[sIndex];
while(op == '+' || op == '-')
{
sIndex++;
if(op == '+') ret += prod();
else ret -= prod();
op = s[sIndex];
}
return ret;
}
int prod()
{
int ret = term();
char op = s[sIndex];
while(op == '*' || op == '/')
{
sIndex++;
if(op == '*') ret *= term();
else ret /= term();
op = s[sIndex];
}
return ret;
}
int term()
{
if(s[sIndex] == '(')
{
sIndex++;
int ret = suma();
#ifdef LOCAL
assert(s[sIndex] == ')');
#endif
sIndex++;
return ret;
}
else
{
int nr = 0;
while(s[sIndex] >= '0' && s[sIndex] <= '9')
{
nr = nr * 10 + s[sIndex] - '0';
sIndex++;
}
return nr;
}
}
int main()
{
cin >> s;
s = '(' + s + ')';
cout << term();
}