Cod sursa(job #3282916)

Utilizator AdrianRosuRosu Adrian Andrei AdrianRosu Data 7 martie 2025 15:18:22
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("evaluare.in");

ofstream fout("evaluare.out");

int termen();

int expresie();

int factor();

string s;

int i;

int termen(){

    int r = expresie();

    while(s[i] == '+' || s[i] == '-'){

        if(s[i] == '+'){

            ++i;

            r += expresie();

        }

        else {

            ++i;

            r -= expresie();

        }

    }

    return r;

}

int expresie(){

    int r = factor();

    while(s[i] == '*' || s[i] == '/'){

        if(s[i] == '*'){

            ++i;

            r *= factor();

        }

        else {

            ++i;

            r /= factor();

        }

    }

    return r;

}


int factor(){

    int r = 0;

    if(s[i] == '('){

        ++i;

        r = termen();

        ++i;

    }

    else if(isdigit(s[i])){

            while(isdigit(s[i])){

                r = r * 10 + (s[i] - '0');

                ++i;

            }


    }

    return r;

}

int main(){

    fin >> s;

    fout << termen();


}