Cod sursa(job #3268248)

Utilizator gab1tzu14Militaru Gabriel gab1tzu14 Data 14 ianuarie 2025 10:21:02
Problema Evaluarea unei expresii Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
  #include <fstream>
  #include <cstring>
  #include <algorithm>
  using namespace std;
  ifstream cin("evaluare.in");
  ofstream cout("evaluare.out");
  int n,j,i,c,p;
  char s[1000001];
int expresie();
int termen();
int factor();
int constanta();

int main()
{
    cin.getline(s, 256);
    cout << expresie();
}

int expresie(){
    int r = termen();
    while(s[i] == '+' || s[i] == '-'){
        if(s[i] == '+'){
            i++;
            r += termen();
        }
        else{
            i++;
            r -=termen();
        }
    }
    return r;
}

int termen(){
    int r = factor();
    while(s[i] == '*' || s[i] == '/'){
        if(s[i] == '*'){
            i++;
            r*= termen();
        }
        else
        {
            i++;
            r/= termen();
        }
    }
    return r;
}

int factor(){
    int r;
    if(s[i] == '('){
        i++;
        r = expresie();
        i++;
    }
    else
    r = constanta();
    return r;
}
int constanta(){
    int r = 0;
    while(s[i] >='0' && s[i] <='9'){
        r =r *10 + s[i]-'0';
        i++;
    }
    return r;
}