Pagini recente » Cod sursa (job #2832286) | Cod sursa (job #1600593) | Cod sursa (job #1116752) | Cod sursa (job #2711962) | Cod sursa (job #442416)
Cod sursa(job #442416)
#include <stdio.h>
#include <string.h>
#define NMAX 100010
char str[NMAX],*p=str;
typedef enum Level {
EXP=0,TER,FAC
}Level;
int proc(Level level) {
int rez = 0;
if(level == EXP){
rez = proc(TER);
while(*p=='+'||*p=='-'){
if(*p=='+') { ++p; rez += proc(TER); }
if(*p=='-') { ++p; rez -= proc(TER); }
}
}
if(level == TER){
rez = proc(FAC);
while(*p=='*'||*p=='/'){
if(*p=='*') { ++p; rez *= proc(FAC); }
if(*p=='/') { ++p; rez /= proc(FAC); }
}
}
if(level == FAC){
if(*p=='(')
++p , rez = proc(EXP) , ++p;
else
while(*p>='0' && *p<='9')
rez = rez*10 + *p-'0' , ++p;
}
return rez;
}
int main(){
freopen("evaluare.in","rb",stdin);
freopen("evaluare.out","w",stdout);
fread(str, sizeof(char), NMAX, stdin);
printf("%d \n",proc(EXP));
return 0;
}