Cod sursa(job #2128583)

Utilizator maria15Maria Dinca maria15 Data 11 februarie 2018 20:32:40
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>

using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

char s[100004];
int expresie(), termen(), factor(), i;

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 *= factor();
        else
            i++, r /= factor();
    }
    return r;
}

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

int main(){
    fin>>s;
    fout<<expresie();
    return 0;
}