Cod sursa(job #1913624)

Utilizator denniscrevusDennis Curti denniscrevus Data 8 martie 2017 13:23:56
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <fstream>
#define NMAX 100005

using namespace std;

char sir[NMAX];
int poz;

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

int eval();
int termen1();
int termen2();

int eval()
{
    int r = termen1();

    while(sir[poz] == '+' || sir[poz] == '-')
    {
        if(sir[poz] == '+')
        {
            poz++;
            r += termen1();
        }
        if(sir[poz] == '-')
        {
            poz++;
            r-= termen1();
        }
    }

    return r;
}

int termen1()
{
    int r = termen2();

    while(sir[poz] == '*' || sir[poz] == '/')
    {
        if(sir[poz] == '*')
        {
            poz++;
            r *= termen2();
        }

        else
        {
            poz++;
            r /= termen2();
        }
    }

    return r;
}

int termen2()
{
    int r = 0;

    if(sir[poz] == '(')
    {
        poz++;
        r = eval();
        poz++;
    }

    while(sir[poz] >= '0' && sir[poz] <= '9')
    {
        r = r*10 + sir[poz] - '0';
        poz++;
    }

    return r;
}

int main()
{
    f.getline(sir, NMAX-2);

    g<<eval();
}