Pagini recente » Cod sursa (job #3253501) | Cod sursa (job #988422) | Cod sursa (job #1917173) | Cod sursa (job #1220086) | Cod sursa (job #651902)
Cod sursa(job #651902)
#include <cstdio>
#include <cstring>
#define expL 100005
int N,ind;
char exp[expL];
inline int crack1();
inline int crack2();
inline int crack3();
inline int crack1()
{
int sol=crack2();
for(;ind<=N&&(exp[ind]=='+'||exp[ind]=='-');)
if(exp[ind++]=='+') sol+=crack2();
else sol-=crack2();
return sol;
}
inline int crack2()
{
int sol=crack3();
for(;ind<=N&&(exp[ind]=='*'||exp[ind]=='/');)
if(exp[ind++]=='*') sol*=crack2();
else sol/=crack2();
return sol;
}
inline int crack3()
{
int sol=0;
if(exp[ind]=='(')
{
++ind;
sol=crack1();
++ind;
}
else
for(;ind<=N&&'0'<=exp[ind]&&exp[ind]<='9';++ind)
{
sol*=10;
sol+=exp[ind]-'0';
}
return sol;
}
int main()
{
freopen("evaluare.in","r",stdin);
fgets(exp,expL,stdin);
N=strlen(exp)-1;
ind=0;
int sol=0;
sol=crack1();
freopen("evaluare.out","w",stdout);
printf("%d\n",sol);
return 0;
}