Cod sursa(job #2047037)

Utilizator MihaelaCismaruMihaela Cismaru MihaelaCismaru Data 24 octombrie 2017 14:54:48
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include<fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
int i;
char c[100001];
int expresie(void), termen(void),factor(void);
int expresie(void) {
    int r = termen();
    while (c[i] == '+' || c[i] == '-' ) {
        if (c[i] =='+') {
            i++;
            r += termen();
        }
        else{
            i ++;
            r-=termen();
        }
    }
    return r;
}
int termen(void) {
    int r = factor();
    while (c[i] == '*' || c[i] == '/') {
        if (c[i] == '*') {
            i ++;
            r *= factor();
        }
        else{
            i ++;
            r /= factor();
        }
    }
    return r;
}
int factor(void) {
    int r;
    if (c[i] =='(') {
            i ++;
            r = expresie();
            i ++;
    }
    else{
        r = 0;
        while (c[i] >= '0' && c[i] <= '9') {
            r = r*10 + c[i] - 48;
            i ++;
        }
    }
    return r;
}
int main(void) {
    in >> c;
    out << expresie();
    return 0;
}