Cod sursa(job #2369321)

Utilizator Vlad_NituNitu Vlad-Petru Vlad_Nitu Data 5 martie 2019 22:26:51
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream f ("emm.in") ;
ofstream g ("emm.out") ;
char s[100010];
int p = 0, k ;
ll eval() ;
ll termen() ;
ll factor() ;

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

    while (s[p] == '+' || s[p] == '-')
    {
            if (s[p] == '+')
            {
                p ++ ;
                r += termen();
            }
            if (s[p] == '-')
            {
                p ++ ;
                r += termen();
            }
    }


    return r;
}

ll termen()
{
    ll r = factor();
    while (s[p] == '*' || s[p] == '/')
    {
            if (s[p] == '*')
            {
                p ++ ;
                r *= factor() ;
            }
            if (s[p] == '/')
            {
                p ++ ;
                r /= factor() ;
            }
    }


    return r;
}
ll factor()
{
    ll r = 0 ;
    if (s[p] == '(')
    {
        p ++ ;
        r = eval() ;
        p ++ ;
    }
    else
    {
        while (isdigit(s[p]))
        {
            r = r * 10 + (s[p]-'0') ;
            p ++ ;
        }
    }
    return r;
}
int main()
{
    f >> s;
    p = 0 ;
    k = strlen(s) ;
    g << eval() ;
}