Cod sursa(job #3367480)

Utilizator MateiDiaconuDiaconu Matei Stefan MateiDiaconu Data 8 octombrie 2026 10:29:52
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <iostream>

using namespace std;

#define MAXS 100000

char s[MAXS];
int sIndex;

int adunare();

int factor(){
    int nr = 0;

    if(s[sIndex] == '('){
        sIndex++;
        nr = adunare();
        sIndex++;
    }
    else{
        while(s[sIndex] >= '0' && s[sIndex] <= '9'){
            nr = nr * 10 + s[sIndex] - '0';
            sIndex++;
        }
    }

    return nr;
}

int inmultire(){
    int rez;

    rez = factor();
    while(s[sIndex] == '*' || s[sIndex] == '/'){
        if(s[sIndex++] == '*'){
            rez *= factor();
        }
        else{
            rez /= factor();
        }
    }

    return rez;
}

int adunare(){
    int rez;

    rez = inmultire();
    while(s[sIndex] == '+' || s[sIndex] == '-'){
        if(s[sIndex++] == '+'){
            rez += inmultire();
        }
        else{
            rez -= inmultire();
        }
    }

    return rez;
}

int main()
{
    FILE *fin, *fout;
    fin = fopen("evaluare.in", "r");
    fout = fopen("evaluare.out", "w");

    fgets(s, MAXS, fin);
    sIndex = 0;
    fprintf(fout, "%d", adunare());

    fclose(fin);
    fclose(fout);
    return 0;
}