Pagini recente » Cod sursa (job #1137076) | Cod sursa (job #7089) | Istoria paginii runda/pregatireoji_clasa_xi-xii | Cod sursa (job #12396) | Cod sursa (job #151733)
Cod sursa(job #151733)
#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]=='+'||e[i]=='-'))
{
i++;
if(e[i-1]=='+')
t+=EvalTer();
if(e[i-1]=='-')
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;
}