Răspuns:
#include <bits/stdc++.h>
#define N 55
using namespace std;
///3549
char s[N],*p=s;
long long Termen();
long long Factor();
long long Eval()
{
long long r=Termen();
while(*p=='+' || *p=='-')
switch(*p)
{
case '+': ++p; r+=Termen(); break;
case '-': ++p; r-=Termen(); break;
}
return r;
}
long long Termen()
{
long long r=Factor();
while(*p=='*' || *p=='/')
switch(*p)
{
case '*': ++p; r*=Factor(); break;
case '/': ++p; r/=Factor(); break;
}
return r;
}
long long Factor()
{
long 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()
{
cin.get(s,N);
cout<<Eval();
return 0;
}
mai sus este solutia problemei.
Succes!