Cod sursa(job #2244630)

Utilizator Cyg_PEduardPetcu Eduard Cyg_PEduard Data 23 septembrie 2018 11:57:01
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <fstream>
#include <stack>
#include <cstring>
#include <cctype>

using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
const int NMAX=100010;
char sn[NMAX],*p=sn;
int expresie(),term(),fact();
int main()
{
    fin.getline(sn,NMAX);
    fout<<expresie();
    return 0;
}
int expresie()
{
    int rez=term();
    while(*p=='+' || *p=='-')
    {
        char s=*p;
        ++p;
        int val=term();
        if(s=='+')
            rez+=val;
        else
            rez-=val;
    }
    return rez;
}
int term()
{
    int rez=fact();
        while(*p=='*' || *p=='/')
            {
                char s=*p;
                p++;
                int val=fact();
                if(s=='*')
                   rez=rez*val;
                else
                    rez=rez/val;
            }
        return rez;
}
int fact()
{
    if(*p>='0' && *p<='9')
    {
        int rez=0;
        while(*p>='0' && *p<='9')
        {
            rez=rez*10+ *p-'0';
            ++p;
        }
        return rez;
    }
    else
    {
        ++p;
        int rez=expresie();
             ++p;
        return rez;
    }
}