Cod sursa(job #2923421)

Utilizator PopaMihaimihai popa PopaMihai Data 13 septembrie 2022 17:12:30
Problema Evaluarea unei expresii Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int NMAX = 1e5 + 3;

char s[NMAX], *p;

bool cif (char c)
{
    return ('0' <= c && c <= '9');
}

int EVAL();
int TERMEN();
int FACTOR();

int EVAL()
{
    int rasp = TERMEN();
    if(*p == '+')
        p++, rasp += TERMEN();
    if(*p == '-')
        p++, rasp -= TERMEN();

    return rasp;
}

int TERMEN()
{
    int rasp = FACTOR();
    if(*p == '*')
        p++, rasp *= FACTOR();
    if(*p == '/')
        p++, rasp /= FACTOR();

    return rasp;
}

int FACTOR()
{
    if(*p == '(') {
        p++;
        int rasp = EVAL();
        p++;
        return rasp;
    }

    int rasp = 0;

    int sign = 1;
    if(*p == '-')
        sign = -1;

    while(cif(*p))
        rasp = rasp * 10 + *p - '0', p++;
    return rasp;
}

int main()
{
    fin >> (s + 1);
    p = (s + 1);
    fout << EVAL();
    return 0;
}