Cod sursa(job #2847652)

Utilizator Alex_AlionteAlionte Alexandru Alex_Alionte Data 11 februarie 2022 10:49:47
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ( "evaluare.in" );

ofstream fout ( "evaluare.out" );

int i;

char s [ 100005 ];

int Evaluare ();

int Termen ();

int Factor ();

int Evaluare () {
    int r = Termen ();
    while ( s [ i ] == '+' || s [ i ] == '-' ) {
        if ( s [ i ] == '+' ) {
            i ++;
            r += Termen ();
        }
        else {
            i ++;
            r -= Termen ();
        }
    }
    return r;
}

int Termen () {
    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 = Evaluare ();
        i ++;
    }
    else {
        while ( isdigit ( s [ i ] ) == true ) {
            r = r * 10 + s [ i ] - '0';
            i ++;
        }
    }
    return r;
}

int main() {
    fin >> s;
    fout << Evaluare ();
    return 0;
}