Cod sursa(job #2307134)

Utilizator razvan1403razvan razvan1403 Data 23 decembrie 2018 19:52:24
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include<cstring>
#include<cstdio>

char s[100010];
char *p=s;
char 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 eval(long);

long element(){
    long r=0;
    if(*p=='('){
        ++p;
        r=eval(0);
        ++p;
       }
    else {
        while( strchr("0123456789" , *p) )
            r=r*10+*(++p-1)-'0';
    }
    return r;
}

long eval(long h){
    long r=(h==hmax)?element():eval(h+1);
    while(strchr(operand[h],*p) )
        r=operatie(r, eval(h+1),*(++p-1))
    return r;
}

int main(){
    ifstream fin("evaluare.in");
    ofstream fout("evaluare.out");
    cin.getline(s,100010);
    eval(0);
    return 0;
}