Cod sursa(job #1856787)

Utilizator seby2341Mesca Sebastian seby2341 Data 25 ianuarie 2017 14:13:07
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
# include <fstream>
# include <cstring>

using namespace std;

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

int i;
char str[ 100003 ];

int evaluare();
int termen();
int factor();

int evaluare() {
    int res = termen();

    while (str[ i ] == '+' || str[ i ] == '-') {
        if (str[ i ] == '+')
            i ++, res += termen();
        else
            i ++, res -= termen();
    }

    return res;
}

int termen() {
    int res = factor();

    while (str[ i ] == '*' || str[ i ] == '/') {
        if (str[ i ] == '*')
            i ++, res *= factor();
        else
            i ++, res /= factor();
    }

    return res;
}

int factor() {
    int res = 0;

    if (str[ i ] == '(') {
        i ++;
        res = evaluare();
        i ++;
    } else while(isdigit(str[ i ]))
            res = res * 10 + (str[ i ] - '0'), i ++;

    return res;
}
int main() {
    f.getline(str, 100000);
    g << evaluare() << "\n";
    return 0;
}