Cod sursa(job #3273681)

Utilizator InformaticianInDevenire1Munteanu Mihnea Gabriel InformaticianInDevenire1 Data 3 februarie 2025 14:43:23
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

char s[100001];
int i = 0;

int Find_addsub();
int Find_multdiv();
int Find_phr();
int Find_digit();

int Find_digit() {
    int r = 0;
    while(isdigit(s[i])) {
        r = r * 10 + (s[i] - '0');
        i++;
    }
    return r;
}

int Find_multdiv() {
    int r = Find_phr();
    while(s[i] == '*' || s[i] == '/') {
        if(s[i] == '*') {
            i++;
            r *= Find_phr();
        }
            else {
            i++;
            r /= Find_phr();
            }
    }
    return r;
}

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

int Find_phr() {
    int r;
    if(s[i] == '(') {
        i++;
        r = Find_addsub();
        i++;
    }
        else
        r = Find_digit();
    return r;
}

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