Cod sursa(job #3274245)

Utilizator Cyb3rBoltSbora Ioan-David Cyb3rBolt Data 5 februarie 2025 21:03:36
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int i = 0;
string s;

inline int grad1();
inline int grad2();
inline int grad3();

inline int grad1() {
    int rez;
    if(s[i] == '-') rez = -grad2();
    else rez = grad2();
    while(s[i] == '+' || s[i] == '-') {
        if(s[i] == '+') {
            i++;
            rez += grad2();
        }
        else {
            i++;
            rez -= grad2();
        }
    }
    return rez;
}

inline int grad2() {
    int rez = grad3();
    while(s[i] == '*' || s[i] == '/') {
        if(s[i] == '*') {
            i++;
            rez *= grad3();
        }
        else {
            i++;
            rez /= grad3();
        }
    }
    return rez;
}

inline int grad3() {
    int rez = 0;
    if(s[i] == '(') {
        i++; /// (
        rez = grad1();
        i++; /// )
    }
    else {
        while(isdigit(s[i])) rez = 10 * rez + s[i++] - '0';
    }
    return rez;
}

signed main()
{
    getline(fin, s);
    fout << grad1();

    return 0;
}