Cod sursa(job #1327822)

Utilizator felixiPuscasu Felix felixi Data 27 ianuarie 2015 10:06:37
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <fstream>

using namespace std;

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

const int NMAX = 100000;

char c[NMAX+3];
int ind = 0;

int termen();

int eval(){
    int r = termen();
    while( c[ind] == '+' || c[ind] == '-' ) {
        if( c[ind] == '+' ) {
            ++ind;
            r += termen();
        }
        if( c[ind] == '-' ) {
            ++ind;
            r -= termen();
        }
    }
    return r;
}

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

int termen() {
    int r = factor();
    while( c[ind] == '*' || c[ind] == '/' ){
        if( c[ind] == '*' ) {
            ++ind;
            r *= factor();
        }
        if( c[ind] == '/' ) {
            ++ind;
            r /= factor();
        }
    }
    return r;
}



int main() {
    in >> c;
    out << eval() << '\n';
    return 0;
}