Cod sursa(job #2739134)

Utilizator sorana5Gligor Sorana sorana5 Data 6 aprilie 2021 21:57:25
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f ("evaluare.in");
ofstream g ("evaluare.out");

char sir[100010];
int n, dr;

int eval();

int factor ()
{
    int aux = 0;
    if (sir[dr] == '(')
    {
        dr++;
        aux = eval();
        dr++;
    }
    while (sir[dr] >= '0' && sir[dr] <= '9')
    {
        aux = aux * 10 + sir[dr] - '0';
        dr++;
    }
    return aux;
}

int termen ()
{
    int aux = factor();
    while (sir[dr] == '/' || sir[dr] == '*')
    {
        if (sir[dr] == '/')
        {
            dr++;
            aux /= factor();
        }
        if (sir[dr] == '*')
        {
            dr++;
            aux *= factor();
        }
    }
    return aux;
}

int eval ()
{
    int aux = termen();
    while (sir[dr] == '+' || sir[dr] == '-')
    {
        if (sir[dr] == '+')
        {
            dr++;
            aux += termen();
        }
        if (sir[dr] == '-')
        {
            dr++;
            aux -= termen();
        }
    }
    return aux;
}

int main()
{
    f>>sir;
    g<<eval();

    f.close();
    g.close();
    return 0;
}