Cod sursa(job #1368009)

Utilizator VladTiberiuMihailescu Vlad Tiberiu VladTiberiu Data 2 martie 2015 13:02:10
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 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{
        while(x[k] >= '0' && x[k] <= '9'){
            r = r * 10 + (x[k] - '0');
            k++;
        }
    }
    return r;
}
int main()
{
    f.getline(x,100010);
    k = 0;
    g << eval();
    return 0;
}