Cod sursa(job #1436446)

Utilizator VladTiberiuMihailescu Vlad Tiberiu VladTiberiu Data 15 mai 2015 21:55:30
Problema Evaluarea unei expresii Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>

using namespace std;

ifstream f("evaluare.in");
ofstream g("evaluare.out");

int k;
char x[100010];

int eval();
int factor();
int termen();

int eval(){
    int r = factor();
    while(x[k] == '-' || x[k] == '+'){
        if(x[k] == '-'){
            k++;
            r -= factor();
        }
        if(x[k] == '+'){
            k++;
            r += factor();
        }
    }
    return r;
}
int factor(){
    int r = termen();
    while(x[k] == '*' || x[k] == '/'){
        if(x[k] == '*'){
            k++;
            r*= factor();
        }
        if(x[k] == '/'){
            k++;
            r /= factor();
        }
    }
    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;
}