Cod sursa(job #1653013)

Utilizator Mihai9Oniga Mihai Mihai9 Data 15 martie 2016 17:39:52
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <cstring>
char s[100010],*p=s,operand[4][4]={"+-", "*/", "^", ""};
const long hmax=2;
long operatie(long x,long y,char c) {
    switch (c){
     case '+':{return x+y;}
     case '-':{return x-y;}
     case '*':{return x*y;}
     case '/':{return x/y;}
    }
    return 0;
}
long ev(long);
long element() {
    long r=0;
    if (*p=='('){p++;r=ev(0);p++;}
    else{
     while(strchr("0123456789",*p)){r=r*10+*(++p-1)-'0';}
    }
    return r;
}
long ev(long h) {
    long r=(h==hmax)?element():ev(h+1);
    while(strchr(operand[h],*p)){r=operatie(r,ev(h+1),*(++p-1));}
    return r;
}
int main(){
 fgets(s,100010,fopen("evaluare.in", "r"));
 fprintf(fopen("evaluare.out","w"),"%ld\n",ev(0));
 return 0;
}