Cod sursa(job #3367484)

Utilizator ChillingManMihai-Tudor ChillingMan Data 8 octombrie 2026 10:53:00
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <iostream>
#include <fstream>

using namespace std;

const int NMAX = 100000;
char a[NMAX + 1];
int i = 0;

int adunare();

int factor(){
    int x;

    if (a[i] == '('){
        i++;
        x = adunare();
        i++;
    }
    else {
        x = 0;
        while (a[i] >= '0' && a[i] <= '9'){
            x = x * 10 + a[i] - '0';
            i++;
        }
    }

    return x;
}

int inmultire(){
    int x;

    x = factor();
    while (a[i] == '*' || a[i] == '/'){
        if (a[i++] == '*'){
            x = x * factor();
        }
        else {
            x = x / factor();
        }
    }

    return x;
}

int adunare(){
    int x;

    x = inmultire();
    while (a[i] == '+' || a[i] == '-'){
        if (a[i++] == '+'){
            x = x + inmultire();
        }
        else {
            x = x - inmultire();
        }
    }

    return x;
}

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

    fprintf(fout, "%d\n", adunare());

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