Cod sursa(job #1221361)

Utilizator borcanirobertBorcani Robert borcanirobert Data 20 august 2014 11:13:31
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>
using namespace std;

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

const int MAXC = 100010;

char a[MAXC], *p = a;

long Eval();
long Termen();
long Factor();

int main()
{
    fin.getline( a, MAXC );
    fout << Eval() << '\n';
    fin.close();
    fout.close();
    return 0;
}

long Eval()
{
    long r = Termen();

    while ( *p == '+' || *p == '-' )
    {
        if ( *p == '+' )
        {
            p++;
            r += Termen();
        //    break;
        }
        else
        {
            p++;
            r -= Termen();
        //    break;
        }
    }

    return r;
}

long Termen()
{
    long r = Factor();

    while ( *p == '*' || *p == '/' )
    {
        if ( *p == '*' )
        {
            p++;
            r *= Factor();
          //  break;
        }
        else
        {
            p++;
            r /= Factor();
          //  break;
        }
    }

    return r;
}

long Factor()
{
    long r = 0;

    if ( *p == '(' )
    {
        p++;
        r = Eval();
        p++;
    }
    else
        while ( *p >= '0' && *p <= '9' )
            r = r * 10 + ( *p - '0' ), p++;

    return r;
}