Cod sursa(job #1368008)

Utilizator VladTiberiuMihailescu Vlad Tiberiu VladTiberiu Data 2 martie 2015 13:00:18
Problema Evaluarea unei expresii Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <fstream>

using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char x[100010];
int k;
int eval();
int factor();
int termen();
int eval(){
    int r = factor();
    while(x[k] == '+' || x[k] == '-'){
        if(x[k] == '+'){
            k++;
            r += factor();
        }else
        if(x[k] == '-'){
            k++;
            r -= factor();
        }
    }
    return r;
}
int factor(){
    int r = termen();
    while(x[k] == '*' || x[k] == '/'){
        if(x[k] == '*'){
            k++;
            r *= termen();
        }else
        if(x[k] == '/'){
            k++;
            r /= termen();
        }
    }
    return r;
}
int termen(){
    int r = 0;
    if(x[k] == '('){
        k++;
        r = eval();
        k++;
    }else{
        if(x[k] >= '0' && x[k] <= '9'){
            r = 0;
            while(x[k] >= '0' && x[k] <= '9'){
                r = r * 10 + (x[k] - '0');
                k++;
            }
        }
    }
    return r;
}
int main()
{
    f.getline(x,100);
    k = 0;
    g << eval();
    return 0;
}