Cod sursa(job #1674507)

Utilizator PaulStighiStiegelbauer Paul-Alexandru PaulStighi Data 4 aprilie 2016 18:16:53
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#define NMax 100010
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

char S[NMax],*p=S;

int termen();
int factor();

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

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

    return r;
}

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

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

    return r;
}

int factor()
{
    int r=0;

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

    return r;
}

int main()
{
    fin.getline(S,NMax);
    fout<<eval()<<"\n";
    return 0;
}