Cod sursa(job #2408580)

Utilizator Ioana_GaborGabor Ioana Ioana_Gabor Data 18 aprilie 2019 09:56:11
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb

#include <iostream>
#include <fstream>
#define NMAX 100000

using namespace std;

ifstream f("evaluare.in");
ofstream g("evaluare.out");

int n,ind;
char s[NMAX+1];

int eval();
int inm_sau_imp();
int termen();

int eval(){
    int rez=inm_sau_imp();
    while(s[ind]=='+'||s[ind]=='-'){
        if(s[ind]=='+'){
            ind++;
            rez=rez+inm_sau_imp();
        }else{
            ind++;
            rez=rez-inm_sau_imp();
        }
    }
    return rez;
}

int inm_sau_imp(){
    int rez=termen();
    while(s[ind]=='*'||s[ind]=='/'){
        if(s[ind]=='*'){
            ind++;
            rez=rez*termen();
        }else{
            ind++;
            rez=rez/termen();
        }
    }
    return rez;
}

int termen(){
    int rez=0;
    if(s[ind]=='('){
        ind++;
        rez=eval();
        ind++;
    }else{
        while(s[ind]<='9'&&s[ind]>='0'){
            rez=rez*10+s[ind]-'0';
            ind++;
        }
    }
    return rez;
}

int main(){
    f>>s;
    g<<eval();
    f.close();
    g.close();
}