Pagini recente » Cod sursa (job #400448) | Cod sursa (job #779196) | Cod sursa (job #1613759) | Cod sursa (job #2360900) | Cod sursa (job #2787981)
#include <bits/stdc++.h>
using namespace std;
string s;
int ind = 0;
long long calc(), inm(), fact();
long long fact()
{
long long res = 0;
if (s[ind] == '(')
++ind, res = calc();
else
while (s[ind] >= '0' && s[ind] <= '9')
res = res * 10 + (s[ind] - '0'), ind++;
//cout << "res " << res << endl;
return res;
}
long long inm()
{
long long p = fact();
while (s[ind] == '*' || s[ind] == '/')
{
if (s[ind] == '*')
++ind, p *= fact();
else
++ind, p /= fact();
}
return p;
}
long long calc()
{
long long sum = inm();
//cout << "sum " << sum << " " << ind << endl;
while (s[ind] == '+' || s[ind] == '-')
{
if (s[ind] == '+')
++ind, sum += inm();
else
++ind, sum -= inm();
}
if (s[ind] == ')')
ind++;
return sum;
}
int main()
{
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
cin >> s;
cout << calc();
}