Cod sursa(job #2116107)

Utilizator modulopaulModulopaul modulopaul Data 27 ianuarie 2018 12:37:49
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <cstring>
#define MAXC 100001

using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char exp[MAXC];
int eval(int &i);
int factor(int &i){
    int nr=0;
    if(exp[i]=='('){
        i++;
        nr=eval(i);
        i++;
        //cout<<exp[i];
    }
    while(exp[i]-'0'>=0 and exp[i]-'0'<=9){
        nr*=10;
        nr+=exp[i]-'0';
        i++;
    }
    return nr;
}
int termen(int &i){
    int p=factor(i);
   // cout<<exp[i]<<' ';
    while(exp[i]=='*' or exp[i]=='/'){
        if(exp[i++]=='*')
            p*=factor(i);
        else
            p/=factor(i);
    }
    return p;
}
int eval(int &i){
    int s;
    s=termen(i);
    while(exp[i]=='+' or exp[i]=='-'){
        if(exp[i++]=='+')
            s+=termen(i);
        else
            s-=termen(i);
    }
    return s;
}
int main(){
    int i=0;
    fin.get(exp,MAXC);
    fout<<eval(i);
    return 0;
}