Cod sursa(job #3297471)

Utilizator Arhiva_EducationalaArhiva Educationala Arhiva_Educationala Data 22 mai 2025 17:44:23
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <bits/stdc++.h>

using namespace std;

string s;
int n;

int idx;

int getNumber() {
    int a = 0;
    while ( idx < n && isdigit( s[idx] ) ) {
        a = a * 10 + s[idx] - '0';
        idx ++;
    }
    return a;
}

int expresie();
int termen();
int factor();

int expresie() {
    int a = termen();
    while ( idx < n && (s[idx] == '+' || s[idx] == '-') ) {
        if ( s[idx] == '+' ) {
            idx ++;
            a += termen();
        } else {
            idx ++;
            a -= termen();
        }
    }
    return a;
}

int termen() {
    int a = factor();
    while ( idx < n && (s[idx] == '*' || s[idx] == '/') ) {
        if ( s[idx] == '*' ) {
            idx ++;
            a *= factor();
        } else {
            idx ++;
            a /= factor();
        }
    }
    return a;
}
int factor() {
    if ( s[idx] == '(' ) {
        idx ++;
        int a = expresie();
        idx ++;
        return a;
    }
    return getNumber();
}

int main() {
    ifstream fin( "evaluare.in" );
    ofstream fout( "evaluare.out" );
    fin >> s;
    n = s.size();
    fout << expresie();
    return 0;
}