Pagini recente » Cod sursa (job #2178200) | Cod sursa (job #1154991) | Cod sursa (job #282733) | Cod sursa (job #828429) | Cod sursa (job #1803074)
#include <bits/stdc++.h>
using namespace std;
const long M = 100010;
char S[M], *p=S;
long termen();
long factor();
long eval()
{
long r = termen();
while (*p == '+' || *p == '-')
{
if (*p == '+')
{++p; r+=termen(); break; }
if (*p == '-')
{
++p;
r -=termen(); break;
}
}
return r;
}
long termen()
{
long r = factor();
while (*p == '*' || *p == '/')
{
if (*p == '*')
{++p; r*=factor(); break; }
if (*p == '/')
{
++p;
r /=factor(); break;
}
}
return r;
}
long factor()
{
long r = 0;
if (*p == '(')
{
++p;
r = eval();
++p;
} else
{
while (*p >= '0' && *p<='9')
{
r = r*10 + *p -'0';
++p;
}
}
return r;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",S);
printf("%ld",eval());
return 0;
}