Cod sursa(job #2937078)

Utilizator DooMeDCristian Alexutan DooMeD Data 9 noiembrie 2022 20:56:06
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>
using namespace std;

struct E {
    string t;
    int ind;
    E(string tmp) {
        t = tmp;
        ind = 0;
    }
    int nr() {
        int tmp = 0;
        while(t[ind] >= '0' and t[ind] <= '9') 
            tmp = tmp * 10 + (t[ind++] - '0');
        return tmp;
    }
    int sm() {
        int tmp = 0;
        if(t[ind] == '(') ind++, tmp = e(), ind++;
        else tmp = nr();
        return tmp;
    }
    int pr() {
        int tmp = sm();
        while(t[ind] == '*' or t[ind] == '/')
            t[ind++] == '*' ? tmp *= sm() : tmp /= sm();
        return tmp;
    }
    int e() {
        int tmp = pr();
        while(t[ind] == '+' or t[ind] == '-') 
            t[ind++] == '+' ? tmp += pr() : tmp -= pr();
        return tmp;
    }
};

int main() {
    ifstream f("evaluare.in");
    ofstream g("evaluare.out");
    
    string t; f >> t;
    E expr(t); g << expr.e();
    return 0;
}