Cod sursa(job #3140425)

Utilizator catalinmarincatalinmarin catalinmarin Data 6 iulie 2023 11:10:13
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.36 kb
#include <fstream>
#include <string>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
string str;

int plusminus(string &str, int &position);
int divmul(string &str, int &position);
int concatbr(string &str, int &position);

int plusminus(string &str, int &position){
    int nr = divmul(str, position);
    while (str[position] == '+' || str[position] == '-'){
        position += 1;
        if (str[position - 1] == '+') {
            nr += divmul(str, position);
        } else {
            nr -= divmul(str, position);
        }
    }
    return nr;
}
int divmul(string &str, int &position){
    int nr = concatbr(str, position);
    while (str[position] == '*' || str[position] == '/'){
        position += 1;
        if (str[position - 1] == '*'){
            nr *= concatbr(str, position);
        } else {
            nr /= concatbr(str, position);
        }
    }
    return nr;
}
int concatbr(string &str, int &position){
    int nr = 0;
    if (str[position] == '('){
        position += 1;
        nr = plusminus(str, position);
        position += 1;
    } else {
        while (str[position] >= '0' && str[position] <= '9'){
            nr *= 10;
            nr += str[position] - 48;
            position += 1;
        }
    }
    return nr;
}
int main(){
    string str;
    cin >> str;
    int position = 0;
    cout << plusminus(str, position);
}