Pagini recente » Cod sursa (job #2368876) | Cod sursa (job #1875281) | Cod sursa (job #1017426) | Cod sursa (job #923544) | Cod sursa (job #1167191)
#include<cstdio>
using namespace std;
typedef long long int lld;
const int LMAX = 100000+5;
void Read(),Print();
lld Eval(),Term(),Fact(),Num();
char Expression[LMAX],*p;
int main()
{
Read();
Print();
return 0;
}
void Read()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",Expression);
}
void Print()
{
p = Expression;
printf("%lld\n",Eval());
}
lld Eval()
{
lld r = Term();
while(*p == '+' || *p == '-')
{
if(*p == '+') p++, r += Term();
if(*p == '-') p++, r -= Term();
}
return r;
}
lld Term()
{
lld r = Fact();
while(*p == '*' || *p == '/')
{
if(*p == '*') p++, r *= Term();
if(*p == '/') p++, r /= Term();
}
return r;
}
lld Fact()
{
lld r;
if(*p == '(') p++, r = Eval(), p++;
else r = Num();
return r;
}
lld Num()
{
lld r = 0;
while(*p >= '0' && *p <= '9')
r = r*10 + *p-'0', p++;
return r;
}