Cod sursa(job #1160714)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 30 martie 2014 18:45:25
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>

#include <cstring>
using namespace std;

const int MAX_LEN = 100002;

char *p;
char s[MAX_LEN];

int expresie();

int factor() {
    int ret = 0;

    if(*p == '(') {
        ++p;
        ret = expresie();
        ++p;
    }
    else {
        while(*p >= '0' && *p <= '9') {
            ret = ret * 10 + *p - '0';
            ++p;
        }
    }

    return ret;
}

int termen() {
    int ret = 0;

    ret = factor();
    while(*p == '*' || *p == '/') {
        if(*p == '*') {
            ++p;
            ret *= factor();
        }
        else {
            ++p;
            ret /= factor();
        }
    }

    return ret;
}

int expresie() {
    int ret = 0;

    ret = termen();
    while(*p == '+' || *p == '-') {
        if(*p == '+') {
            ++p;
            ret += termen();
        }
        else {
            ++p;
            ret -= termen();
        }
    }

    return ret;
}

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

    f >> s;

    p = s;

    g << expresie() << "\n";

    f.close();
    g.close();

    return 0;
}