Cod sursa(job #3204674)

Utilizator AnSeDraAndrei Sebastian Dragulescu AnSeDra Data 17 februarie 2024 11:30:24
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <fstream>
#include <string>

using namespace std;

unsigned int poz;
string s;

int adunare();

int factor(){
    if(s[poz] == '('){
        int val;

        poz++;
        val = adunare();
        poz++;

        return val;
    }
    else{
        int nr = 0;

        while(poz < s.size() && s[poz] >= '0' && s[poz] <= '9'){
            nr = nr * 10 + (s[poz] - '0');
            poz++;
        }

        return nr;
    }
}

int inmultire(){
    int val = factor();

    while(poz < s.size() && (s[poz] == '*' || s[poz] == '/')){
        poz++;

        if(s[poz - 1] == '*'){
            val *= factor();
        }
        else{
            val /= factor();
        }

    }

    return val;
}

int adunare(){
    int val = inmultire();

    while(poz < s.size() && (s[poz] == '+' || s[poz] == '-')){
        poz++;

        if(s[poz - 1] == '+'){
            val += inmultire();
        }
        else{
            val -= inmultire();
        }
    }

    return val;
}

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

    fin >> s;

    poz = 0;
    fout << adunare();

    return 0;
}