Pagini recente » Cod sursa (job #2817340) | Cod sursa (job #1635976) | Cod sursa (job #2237779) | Cod sursa (job #2704585) | Cod sursa (job #3280151)
#include <bits/stdc++.h>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
int termen();
int factor();
string s;
int i;
int evaluare()
{
int r = termen();
while(s[i] == '-' || s[i] == '+')
{
if(s[i] == '-')
++i, r -= termen();
else
++i, r += termen();
}
return r;
}
int termen()
{
int f = factor();
while(s[i] == '*' || s[i] == '/')
{
if(s[i] == '*')
++i, f *= factor();
else
++i, f /= factor();
}
return f;
}
int factor()
{
int64_t r = 0;
if(s[i] == '(')
{
++i;
r = evaluare();
++i;
}
else
{
while(isdigit(s[i]))
{
r = r * 10 + (s[i] - '0');
++i;
}
}
return r;
}
int main()
{
in >> s;
out << evaluare();
return 0;
}