Cod sursa(job #1193132)

Utilizator ZenusTudor Costin Razvan Zenus Data 31 mai 2014 00:05:51
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <cstdio>
#include <cstring>
#include <cctype>

using namespace std;

#define NMAX 100010

int Evaluare();
int Factor();
int Termen();

char S[NMAX],*P;

int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);

    gets(S);
    P=S;

    printf("%d\n",Evaluare());

    return 0;
}

int Evaluare()
{
    int Help,semn;

    Help=Termen();

    while (*P=='+' || *P=='-')
    {
       (*P=='+') ? semn=1 : semn=-1;
       ++P;

       Help+=semn*(Termen());
    }

    return Help;
}
int Termen()
{
    int Help=Factor(),type;

    while (*P=='*' || *P=='/')
    {
        (*P=='*') ? type=1 : type=2;
        ++P;

        (type==1) ? Help*=Factor() : Help/=Factor();
    }

    return Help;
}
int Factor()
{
    if (*P=='(')
    {
        int Help;
        ++P;
        Help=Evaluare();
        ++P;
        return Help;
    }

    int Number=0;
    while(isdigit(*P))
    {
        Number*=10;
        Number+=(*P)-'0';
        ++P;
    }

    return Number;
}