Pagini recente » Cod sursa (job #477314) | Istoria paginii runda/the-secret | Cod sursa (job #304844) | Cod sursa (job #74489) | Cod sursa (job #2874920)
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
// #define f cin
// #define g cout
string s;
int n, i;
int expresie();
int termen();
int factor();
int32_t main()
{
f >> s;
g << expresie();
return 0;
}
int expresie()
{
int r = termen();
while (i < s.size() && (s[i] == '+' || s[i] == '-'))
if (s[i] == '+')
i++, r += termen();
else
i++, r -= termen();
return r;
}
int termen()
{
int r = factor();
while (i < s.size() && (s[i] == '*' || s[i] == '/'))
if (s[i] == '*')
i++, r *= termen();
else
i++, r /= termen();
return r;
}
int factor()
{
int r = 0;
if (s[i] == '(')
i++, r = expresie(), i++;
else
while (i < s.size() && isdigit(s[i]))
r = r * 10 + s[i] - '0', i++;
return r;
}