Cod sursa(job #2584213)

Utilizator TheGodFather2131Alexandru Miclea TheGodFather2131 Data 18 martie 2020 15:38:33
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>
#include <fstream>

using namespace std;

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

//VARIABLES

string s;
int i, ans;

//FUNCTIONS

int sum();
int product();
int parantheses();

int sum(){
    int ans = product();
    while (s[i] == '+' || s[i] == '-'){
        i++;
        if (s[i] == '+') ans += product();
        else ans -= product();
    }
    return ans;
}

int product(){
    int ans = parantheses();
    while (s[i] == '*' || s[i] == '/'){
        i++;
        if (s[i] == '*') ans *= parantheses();
        else ans /= parantheses();
    }
    return ans;

}

int parantheses(){
    int ans = 0;

    if (s[i] == '('){
        i++;
        ans = sum();
        i++;
    }
    else {
        while (i < s.size() && '0' <= s[i] && s[i] <= '9'){
            ans *= 10;
            ans += s[i] - '0';
            i++;
        }
    }
    return ans;
}

//MAIN
int main() {

    fin >> s;
    fout << sum();
    return 0;
}