Cod sursa(job #2812506)

Utilizator Nico10Nicola Andrei George Nico10 Data 4 decembrie 2021 17:05:51
Problema Evaluarea unei expresii Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
/// evaluare - infoarena
#include <fstream>
using namespace std;
fstream f, g;
char s[10002];
int p;
int F();
int T();
int E();

int main()
{
    f.open("evaluare.in", ios::in);
    g.open("evaluare.out", ios::out);
    f >> s;
    g << E();
    return 0;
}

int E()
{
    int r = T();
    while( s[p] == '+' or s[p] == '-' )
    {
        if(s[p] == '+' ) ++p, r+=T();
        else ++p, r-=T();
    }
    return r;
}

int T()
{
    int f = F();
    while( s[p] == '*' or s[p] == '/' )
    {
        if( s[p] == '*' ) ++p, f *= F();
        else ++p, f/=F();
    }
    return f;
}

int F()
{
    int r;
    if( s[p] == '(' )
    {
        ++p;
        r = E();
        p++;
    }
    else
    {
        r=0;
        while( isdigit(s[p]) )
        {
            r = r*10 + (s[p] - '0');
            ++p;
        }
    }
    return r;
}