Cod sursa(job #938827)

Utilizator romircea2010FMI Trifan Mircea Mihai romircea2010 Data 13 aprilie 2013 23:11:25
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <fstream>

using namespace std;

char a[100010];
int poz;

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

inline int eval()
{
    int rez = termen();
    while (a[poz] == '+' || a[poz] == '-')
        if (a[poz] == '+')
        {
            poz++;
            rez += termen();
        }
        else
        {
            poz++;
            rez -= termen();
        }
    return rez;
}

inline int termen ()
{
    int rez = factor();
    while (a[poz] == '*' || a[poz] == '/')
        if (a[poz] == '*')
        {
            poz++;
            rez *= factor();
        }
        else
        {
            poz++;
            rez /= factor();
        }
    return rez;
}

inline int factor()
{
    int rez;
    if (a[poz] == '(')
    {
        poz++;
        rez = eval();
        poz++;
    }
    else
    {
        rez = 0;
        while (a[poz] >= '0' && a[poz] <= '9' && a[poz])
        {
            rez = rez * 10 + (a[poz] - '0');
            poz++;
        }
    }
    return rez;
}

int main()
{
    ifstream f ("evaluare.in");
    f>>a;
    f.close();
    ofstream g ("evaluare.out");
    g<<eval();
    g.close();
    return 0;
}