Cod sursa(job #2151861)

Utilizator EclipseTepes Alexandru Eclipse Data 4 martie 2018 23:32:27
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <iostream>
#include <fstream>
#include <string.h>
#define dMAX 100001

using namespace std;

int i, t;
char expresie[dMAX];

int exp();
int factor();
int termen();

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

int main()
{
    fin >> expresie;
    fout << exp();
    return 0;
}

int exp() {
    int t = termen();
    while (expresie[i] == '+' || expresie[i] == '-') {
        if (expresie[i] == '+') {
            i++;
            t += termen();
        } else {
            i++;
            t -= termen();
        }
    }
    return t;
}

int termen() {
    int t = factor();
    while (expresie[i] == '*' || expresie[i] == '/') {
        if (expresie[i] == '*') {
            i++;
            t *= factor();
        } else {
            i++;
            t /= factor();
        }
    }
    return t;
}

int factor() {
    int t = 0;
    if (expresie[i] == '(') {
        i++;
        t = exp();
        i++;
    } else {
        while (expresie[i] >= '0' && expresie[i] <= '9') {
            t = t * 10 + expresie[i] - '0';
            i++;
        }
    }
    return t;
}