Pagini recente » Cod sursa (job #3175798) | Cod sursa (job #1487743) | Cod sursa (job #1260209) | Cod sursa (job #2042852) | Cod sursa (job #1647828)
#include <bits/stdc++.h>
using namespace std;
int n , p;
char s[100010];
int eval();
int getNr()
{
int x = 0;
while (isdigit(s[p]))
x = x * 10 + s[p] - '0', p++;
p--;
return x;
}
int factor()
{
int ret;
if (s[p] == '(')
p++, ret = eval();
else
ret = getNr();
p++;
return ret;
}
int termen()
{
int ret = factor();
while (s[p] == '*' || s[p] == '/')
if (s[p] == '*') p++, ret *= factor();
else p++, ret /= factor();
return ret;
}
int eval()
{
int ret = termen();
while (s[p] == '+' || s[p] == '-')
if (s[p] == '+') p++, ret += termen();
else p++, ret -= termen();
return ret;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
gets(s + 1); n = strlen(s + 1);
p = 1;
printf("%d\n", eval());
return 0;
}