Pagini recente » Cod sursa (job #1389773) | Cod sursa (job #1203858) | Cod sursa (job #2645902) | Cod sursa (job #2658860) | Cod sursa (job #2874917)
#include <bits/stdc++.h>
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 (i >= s.size())
return 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;
}