Pagini recente » Cod sursa (job #2209678) | Cod sursa (job #429426) | Cod sursa (job #2897234) | Cod sursa (job #1856829) | Cod sursa (job #148307)
Cod sursa(job #148307)
#include<stdio.h>
#define Nm 100001
char S[Nm];
int p;
int EvalExpr(void);
int EvalFact()
{
int r;
if(S[p]=='(')
{
++p;
r=EvalExpr();
++p;
}
else
for(r=0;S[p]>='0' && S[p]<='9';++p)
r=r*10+S[p]-'0';
return r;
}
int EvalTerm()
{
int r=EvalFact();
while(S[p]=='*' || S[p]=='/')
if(S[p++]=='*')
r*=EvalFact();
else
r/=EvalFact();
return r;
}
int EvalExpr()
{
int r=EvalTerm();
while(S[p]=='+' || S[p]=='-')
if(S[p++]=='+')
r+=EvalTerm();
else
r-=EvalTerm();
return r;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",S);
printf("%d\n",EvalExpr());
return 0;
}