Cod sursa(job #2188992)

Utilizator stefanbrb10Barbu Stefan stefanbrb10 Data 27 martie 2018 16:46:22
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.36 kb
//#include <ambitie>
  #include <fstream>
  #include <cstring>


#define nrmax 100003

using namespace std;

ifstream input("evaluare.in");
ofstream print("evaluare.out");

char c[nrmax],*p=c;

long Solve();
long nr();

long termen(){
    long returnela=nr();
    while(*p=='*' || *p=='/'){
            switch(*p){
            case '*':
                ++p;
                returnela*=nr();
                break;
            case '/':
                ++p;
                returnela/=nr();
                break;
            }
    }
    return returnela;
}

long nr(){
    long returnela=0;
    if(*p=='('){
        ++p;
        returnela=Solve();
        ++p;
    }
    else {
        while(isdigit(*p)){
                returnela*=10;
                returnela+=*p-'0';
                ++p;
        }
    }
    return returnela ;
}

long Solve(){
    long ans = termen();
    while(*p=='+' || *p=='-'){
            switch(*p){
                case '+':
                    ++p;
                    ans+= termen();
                    break;
                case '-':
                    ++p;
                    ans-=termen();
                    break;
            }
    }
    return ans;
}

int main(){
    input.getline(c,nrmax);
    print<<Solve();
    print.close();
    input.close();
    return 0;
}