Pagini recente » Cod sursa (job #1638499) | Cod sursa (job #170601) | Cod sursa (job #557223) | Cod sursa (job #1044413) | Cod sursa (job #1690059)
#include <bits/stdc++.h>
using namespace std;
const int nmax = 1e5 + 10;
char *p, s[nmax];
int getnr()
{
int x = 0;
while (isdigit(*p))
x = x * 10 + *p - '0',
p++;
p--;
return x;
}
int bagaeval();
int factor()
{
int ret;
if (*p == '(') p++, ret = bagaeval();
else ret = getnr();
p++;
return ret;
}
int termen()
{
int act = factor();
while (*p == '*' || *p == '/')
if (*p == '*') p++, act *= factor();
else p++, act /= factor();
return act;
}
int bagaeval()
{
int act = termen();
while (*p == '+' || *p == '-')
if (*p == '+') p++, act += termen();
else p++, act -= termen();
return act;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
gets(s);
p = s;
printf("%d\n", bagaeval());
return 0;
}