Pagini recente » Cod sursa (job #1351569) | Cod sursa (job #1440567) | Cod sursa (job #1105079) | Cod sursa (job #2362691) | Cod sursa (job #160136)
Cod sursa(job #160136)
#include<stdio.h>
#include<string.h>
long i,n,v,lg;
char e[100001];
long Eval();
long EvalFactor();
long EvalTermen();
long EvalExpresie();
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",&e);
lg=strlen(e);
i=0;
printf("%d",EvalExpresie());
return 0;
}
long Eval()
{long f;
for (f=0;e[i]>='0' && e[i]<='9'; i++)
f=f*10+(e[i]-'0');
return f;
}
long EvalFactor()
{long f;
if (e[i]=='('){
i++;
f=EvalExpresie();
i++;
}
else{
f=Eval();
}
return f;
}
long EvalTermen()
{long r=EvalFactor();
while(i<lg && (e[i]=='*'|| e[i]=='/')){
i++;
if (e[i-1]=='*')
r*=EvalFactor();
else
r/=EvalFactor();
}
return r;
}
long EvalExpresie()
{long r=EvalTermen();
while(i<lg && (e[i]=='+'|| e[i]=='-')){
i++;
if (e[i-1]=='+')
r+=EvalTermen();
else
r-=EvalTermen();
}
return r;
}