Cod sursa(job #2790666)

Utilizator ecaterinaEcaterina Stefanescu ecaterina Data 29 octombrie 2021 12:18:45
Problema Evaluarea unei expresii Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <stdio.h>

#define MAX 100001

char s[MAX];

int pas;

int adunare();

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

int inmultire() {
    int rez;
    
    rez = factor();
    while ((s[pas]=='*') || (s[pas]=='/')) {
        if (s[pas] == '*') {
            pas++;
            rez*=factor();
        } else {
            pas++;
            rez/=factor();
        }
    }
    
    return rez;
}


int adunare() {
    int rez;
    
    rez = inmultire();
    while ((s[pas]=='+') || (s[pas] == '-')) {
        if (s[pas] == '+') {
            pas++;
            rez+=inmultire();
        } else {
            pas++;
            rez-=inmultire();
        }
    }
    
    return rez;
}


int main() {
    FILE *fin, *fout;
    fin = fopen("evaluare.in", "r");
    fout = fopen("evaluare.out", "w");
    
    fgets(s, MAX, fin);
    
    pas=0;
    fprintf(fout, "%d", adunare());
    
    fclose(fin);
    fclose(fout);
    return 0;
}