Cod sursa(job #2722800)

Utilizator nicolaefilatNicolae Filat nicolaefilat Data 13 martie 2021 12:12:58
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <iostream>
#include <fstream>

using namespace std;

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

string s;
int i;

int adunari_scaderi();
int inmultiri_impartiri();
int numere_paranteze();

int adunari_scaderi(){
    int rez = inmultiri_impartiri();
    while(s[i] == '+' || s[i] == '-'){
        if(s[i] == '+'){
            i++;
            rez += inmultiri_impartiri();
        }else{
            i++;
            rez -= inmultiri_impartiri();
        }
    }
    return rez;
}
int inmultiri_impartiri(){
    int rez = numere_paranteze();
    while(s[i] == '*' || s[i] == '/'){
        if(s[i] == '*'){
            i++;
            rez *= numere_paranteze();
        }else{
            i++;
            rez /= numere_paranteze();
        }
    }
    return rez;
}
int numere_paranteze(){
    if(s[i] == '('){
        i++;
        int rez = adunari_scaderi();
        i++;
        return rez;
    }else{
        int nr = 0;
        while('0' <= s[i] && s[i] <= '9'){
            nr = nr * 10 + s[i] - '0';
            i++;
        }
        return nr;
    }
}


int main()
{
    in>>s;
    out<<adunari_scaderi();
    return 0;
}