Cod sursa(job #1292721)

Utilizator Stefex09Stefan Teodorescu Stefex09 Data 14 decembrie 2014 18:05:41
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int MAXN = 100001;

char S[MAXN];
char *P;

inline int GetInt ()
{
    int ret = 0;

    while (*P >= '0' && *P <= '9'){
        ret = (ret * 10) + (*P - '0');
        P ++;
    }

    return ret;
}

int termen ();

int eval ()
{
    int a = termen ();

    while (*P == '+' || *P == '-'){
        if (*P == '+'){
            ++ P;
            a += termen ();
        }
        else{
            ++ P;
            a -= termen ();
        }
    }

    return a;
}

int factor ()
{
    int a = 0;

    if (*P == '('){
        ++ P;
        a = eval ();
        ++ P;
    }
    else
        a = GetInt ();

    return a;
}

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

    while (*P == '*' || *P == '/')
        if (*P == '*'){
            ++ P;
            a *= factor ();
        }
        else{
            ++ P;
            a /= factor ();
        }

    return a;
}

int main()
{
    in >> S;
    P = S;
    out << eval ();

    return 0;
}