Pagini recente » Cod sursa (job #2715696) | Cod sursa (job #811467) | Cod sursa (job #2727241) | Borderou de evaluare (job #550343) | Cod sursa (job #387338)
Cod sursa(job #387338)
#include<stdio.h>
#include<string.h>
#define N 100002
int i, lg;
char s[N];
int EvalFactor(), EvalTermen(), EvalExp();
int EvalFactor(){
int f;
if (s[i] == '('){
i++;
f = EvalExp();
i++;
}
else{
for (f = 0; s[i] >= '0' && s[i] <= '9'; i++)
f = f*10 + (s[i] - '0');
}
return f;
}
int EvalTermen(){
int r = EvalFactor();
while (i <= lg && (s[i]=='*' || s[i] == '/')){
i++;
if (s[i-1] == '*') r *= EvalFactor();
else r /= EvalFactor();
}
return r;
}
int EvalExp(){
int r = EvalTermen();
while (i <= lg && (s[i] == '+' || s[i] == '-')){
i++;
if (s[i-1] == '+') r += EvalTermen();
else r -= EvalTermen();
}
return r;
}
int main(){
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s", s+1);
lg = strlen(s+1);
i = 1;
printf("%d", EvalExp());
return 0;
}