Cod sursa(job #3210255)

Utilizator SebyIliescuIliescu Sebastian Sorin SebyIliescu Data 5 martie 2024 17:48:48
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

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

char s[100000], *p;

int eval();
int termen();
int factor();

int eval()
{
    int rez = termen();
    while (*p == '+' || *p == '-')
    {
        if (*p == '+')
        {
            p++;
            rez += termen();
        }
        else
        {
            p++;
            rez -= termen();
        }
    }

    return rez;
}

int termen()
{
    int rez = factor();
    while (*p == '*' || *p == '/')
    {
        if (*p == '*')
        {
            p++;
            rez *= factor();
        }
        else
        {
            p++;
            rez /= factor();
        }
    }

    return rez;
}

int factor()
{
    int rez = 0;
    if (*p == '(')
    {
        p++;
        rez = eval();
        p++;
    }
    else
    {
        while ('0' <= *p && *p <= '9')
        {
            rez = rez * 10 + (*p - '0');
            p++;
        }
    }

    return rez;
}


int main()
{
    fin >> s;
    p = s;

    fout << eval();


    return 0;
}