Cod sursa(job #3228613)

Utilizator PescarusTanislav Luca Andrei Pescarus Data 9 mai 2024 09:57:35
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
const int nmax = 100005;
char s[nmax];
int i;
int expresie();
int termen();
int factor();
int constanta();
int expresie(){
    int r = factor();
    while(s[i] == '+' || s[i] == '-'){
        if(s[i] == '+'){
            i++;
            r += factor();
        }
        else{
            i++;
            r -= factor();
        }
    }
    return r;
}
int factor(){
    int r = termen();
    while(s[i] == '/' || s[i] == '*'){
        if(s[i] == '/'){
            i++;
            r /= termen();
        }
        else{
            i++;
            r *= termen();
        }
    }
    return r;
}
int termen(){
    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;
}
int main(){
    f >> s;
    g << expresie();
}