Pagini recente » Cod sursa (job #566288) | Cod sursa (job #590958) | Cod sursa (job #129179) | Cod sursa (job #2063587) | Cod sursa (job #151727)
Cod sursa(job #151727)
#include<stdio.h>
#include<string.h>
#define N 100001
char e[N];
int i,lg;
int EvalExpr();
int EvalFact();
int EvalTer();
int eval()
{
int x=0;
while(e[i]>='0'&&e[i]<='9')
{
x=x*10+(e[i]-'0');
i++;
}
return x;
}
int EvalTer()
{
int f=EvalFact();
while(i<lg&&(e[i]=='*'||e[i]=='/'))
{
i++;
if(e[i-1]=='*')
f*=EvalFact();
if(e[i-1]=='/')
f/=EvalFact();
}
return f;
}
int EvalExpr()
{
int t=EvalTer();
while(i<lg&&e[i]=='+')
{
i++;
t+=EvalTer();
}
return t;
}
int EvalFact()
{
int f;
if(e[i]=='(')
{
i++;
f=EvalExpr();
i++;
}
else
{
f=eval();
}
return f;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s\n",&e);
lg=strlen(e);
printf("%d\n",EvalExpr());
return 0;
}