Cod sursa(job #2789248)

Utilizator teodorescunicolasteodorescu nicolas alexandru teodorescunicolas Data 27 octombrie 2021 11:22:49
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <stdio.h>
#include <cstring>
#define NMAXX 100000

using namespace std;

char s[NMAXX];
int i;

int adunare();

int element() {
    int nr;

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

    return nr;
}

int inmultire() {
    int res;

    res = element();
    while ( s[i] == '*' || s[i] == '/' ) {
        if ( s[i++] == '*' )
            res *= element();
        else
            res /= element();
    }

    return res;
}

int adunare() {
    int res;

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

    return res;
}

int main()
{
    FILE *fin, *fout;

    fin = fopen( "evaluare.in", "r" );
    fout = fopen( "evaluare.out", "w" );

    fgets( s, NMAXX, fin );
    fclose( fin );

    i = 0;
    fprintf( fout, "%d", adunare() );

    fclose( fout );
    return 0;
}