Cod sursa(job #2332684)

Utilizator segal_ftw3Luncanu Sergiu segal_ftw3 Data 31 ianuarie 2019 00:09:48
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>

using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

const int MAX = 100010;

char exp[MAX],*p = exp;

long eval();
long termen();
long factor();

int main()
{
    fin>>exp;
    fout<<eval();
    return 0;
}

long eval()
{
    long result = termen();
    while( *p == '+' or *p == '-' )
    {
        if( *p == '+' )
            *p++,
            result += termen();
        else
            *p++,
            result -= termen();
    }
    return result;
}

long termen()
{
    long result = factor();
    while( *p == '*' or *p == '/' )
    {
        if( *p == '*' )
            *p++,
            result *= factor();
        else
            *p++,
            result /= factor();
    }
    return result;
}

long factor()
{
    long result = 0;
    if( *p == '(' )
    {
        *p++;
        result = eval();
        *p++;
    }else{

        while( *p >= '0' and *p <= '9' )
        {
            result = result *10 + (*p - '0');
            *p++;
        }

    }
    return result;
}