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