Cod sursa(job #1131192)

Utilizator tester9x9Tester9x9 tester9x9 Data 28 februarie 2014 18:23:09
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
#define NM 100010

using namespace std;

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

char S[NM], *p;

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

int main ()
{
    f >> S;
    p=S;

    g << Eval() << '\n';

    return 0;
}

long long Eval ()
{
    long long ANS=Termen();
    char c;

    while (*p=='+' || *p=='-')
    {
        c=*p;
        ++p;
        if (c=='+')
            ANS+=Termen();
        else
            ANS-=Termen();
    }

    return ANS;
}

long long Termen ()
{
    long long ANS=Factor();
    char c;

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

    return ANS;
}

long long Factor ()
{
    long long ANS=0;
    if (*p=='(')
    {
        ++p;
        ANS=Eval();
        ++p;
        return ANS;
    }

    while ('0'<=*p && *p<='9')
    {
        ANS=10*ANS + *p-'0';
        ++p;
    }

    return ANS;
}