Cod sursa(job #2789281)

Utilizator andreipirjol5Andrei Pirjol andreipirjol5 Data 27 octombrie 2021 12:03:05
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#define N 100000
#include <stdio.h>

char s[N + 5] ;
int i ;

int adunare() ;

int factor()
{
    int n ;

    if (s[i] == '(')
    {
        i++;

        n = adunare() ;

        i++;
    }
    else
    {
        n = 0 ;

        while (s[i] >= '0' and s[i] <= '9')
        {
            n = n * 10 + (s[i] - '0') ;

            i++;
        }
    }

    return n ;
}

int inmultire()
{
    int rez = factor() ;

    while (s[i] == '*' or s[i] == '/')
        if (s[i++] == '*')
            rez = rez * factor() ;
        else rez = rez / factor() ;


    return rez ;
}

int adunare()
{
    int rez = inmultire() ;

    while (s[i] == '+' or s[i] == '-')
        if(s[i++] == '+')
            rez = rez + inmultire() ;
        else rez = rez - inmultire() ;

    return rez ;
}

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

    fgets(s, N + 5, fin);

    i = 0 ;

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

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