Cod sursa(job #2288053)
| Utilizator | Data | 22 noiembrie 2018 20:11:01 | |
|---|---|---|---|
| Problema | Evaluarea unei expresii | Scor | 100 |
| Compilator | c-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.67 kb |
#include<stdio.h>
char s[100000];
int n;
int E(int l) {
int x,y;
if(l==2)
if(s[n]=='(')
n++,x=E(0),n++;
else
for(x=0;s[n]>='0'&&s[n]<='9';n++)
x=x*10+s[n]-'0';
else
for(x=E(l+1);!l?(s[n]=='+'||s[n]=='-'):(s[n]=='*'||s[n]=='/');x=y)
if(s[n]=='+')
n++,y=x+E(l+1);
else if(s[n]=='-')
n++,y=x-E(l+1);
else if(s[n]=='*')
n++,y=x*E(l+1);
else if(s[n]=='/')
n++,y=x/E(l+1);
return x;
}
int main() {
freopen("evaluare.in","r",stdin),freopen("evaluare.out","w",stdout),gets(s),printf("%d",E(0));
}
