Cod sursa(job #2788147)

Utilizator AlexNicuNicu Alexandru AlexNicu Data 25 octombrie 2021 09:34:13
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <fstream>

using namespace std;

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

string s;
int poz_s;

int add();

int factor() {
    int ans;
    ans = 0;
    if ( s[poz_s] == '(' ) {
        poz_s++;
        ans = add();
        poz_s++;
    } else {
        while ( s[poz_s] >= '0' && s[poz_s] <= '9' ) {
            ans = ans * 10 + ( s[poz_s] - '0' );
            poz_s++;
        }
    }
    return ans;
}

int multiply() {
    int ans;
    ans = factor();
    while ( s[poz_s] == '*' || s[poz_s] == '/' ) {
         if ( s[poz_s] == '*' ) {
            poz_s++;
            ans = ans * factor();
         }
         else {
            poz_s++;
            ans = ans / factor();
         }
    }
    return ans;
}

int add() {
    int ans;
    ans = multiply();
    while ( s[poz_s] == '+' || s[poz_s] == '-' ) {
        if ( s[poz_s] == '+' ) {
            poz_s++;
            ans = ans + multiply();
        } else {
            poz_s++;
            ans = ans - multiply();
        }
    }
    return ans;
}

int main() {
    cin >> s;
    poz_s = 0;
    cout << add();
    return 0;
}