Cod sursa(job #2420850)
| Utilizator | Data | 13 mai 2019 14:19:36 | |
|---|---|---|---|
| Problema | Evaluarea unei expresii | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.72 kb |
#include<cstdio>
#define N 100001
char s[N],*p=s;
inline int E(int l)
{
int x,y;
if(l==2)
if(*p=='(')
p++,x=E(0),p++;
else
for(x=0;*p>='0'&&*p<='9';p++)
x=x*10+*p-'0';
else
for(x=E(l+1);(!l&&(*p=='+'||*p=='-'))||(l&&(*p=='*'||*p=='/'));x=y)
if(!l)
if(*p=='+')
p++,y=x+E(l+1);
else
p++,y=x-E(l+1);
else if(*p=='*')
p++,y=x*E(l+1);
else
p++,y=x/E(l+1);
return x;
}
int main()
{
freopen("evaluare.in","r",stdin),freopen("evaluare.out","w",stdout),fgets(s,N,stdin),printf("%d",E(0));
}
