Cod sursa(job #2203548)

Utilizator YouDontNeedMyNameJurcut Paul YouDontNeedMyName Data 12 mai 2018 17:24:59
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <bits/stdc++.h>
#define N_MAX 100005
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char str[N_MAX];
int p;
long inmultire_impartire();
long paranteze();
long adunare_scadere()
{
    long r=inmultire_impartire();
    while(str[p]=='+' || str[p]=='-')
    {
        if(str[p]=='+')
        {
            ++p;
            r+=inmultire_impartire();
        }
        else if(str[p]=='-')
        {
            ++p;
            r-=inmultire_impartire();
        }
    }
    return r;
}
long inmultire_impartire()
{
    long r=paranteze();
    while(str[p]=='*' || str[p]=='/')
    {
        if(str[p]=='*')
        {
            p++;
            r*=paranteze();
        }
        else if(str[p]=='/')
        {
            p++;
            r/=paranteze();
        }
    }
    return r;
}
long paranteze()
{
    long r=0;
    if(str[p]=='(')
    {
        p++;
        r=adunare_scadere();
        p++;
    }
    else
    {
        while(isdigit(str[p]))
        {
            r=r*10+str[p]-'0';
            p++;
        }
    }
    return r;
}
int main()
{
    in >> str;
    out << adunare_scadere();
    return 0;
}