Cod sursa(job #1336308)

Utilizator gedicaAlpaca Gedit gedica Data 7 februarie 2015 16:37:10
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <fstream>

using namespace std;

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

const int NMAX = 100000;

char c[NMAX+3];
int ind = 0;

int termen();

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

    while( c[ind] == '+' || c[ind] == '-' )
    {
        if( c[ind] == '+' )
        {
            ++ind;
            r += termen();
        }
        if( c[ind] == '-' )
        {
            ++ind;
            r -= termen();
        }
    }
    return r;
}

int factor(  )
{
    int r = 0;

    if( c[ind] == '(' )
    {
        ++ind;
        r = eval();
        ++ind;
    }
    else
    {
        while( c[ind] <='9' && c[ind] >='0' )
        {
            r = r*10 + c[ind]-'0';
            ++ind;
        }
    }
    return r;
}

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

    while( c[ind] == '*' || c[ind] == '/' )
    {
        if( c[ind] == '*' )
        {
            ++ind;
            r *= factor();
        }
        if( c[ind] == '/' )
        {
            ++ind;
            r /= factor();
        }
    }
    return r;
}



int main(  )
{
    in >> c;
    out << eval() << '\n';
    return 0;
}