Cod sursa(job #2860401)

Utilizator CoroloHorjea Cosmin Corolo Data 2 martie 2022 15:17:18
Problema Evaluarea unei expresii Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <bits/stdc++.h>

using namespace std;

char op[4][4] = {"+-", "*/", "^", ""};

#define NX 100010
string S;
char *p = &S[0];

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

int eval(int a, int b, char o)
{
    switch (o)
    {
    case '+':
        return a + b;
    case '-':
        return a - b;
    case '*':
        return a * b;
    case '/':
        return a / b;
    }
    return 0;
}

int expr(int lev)
{
    int x, y;

    if (lev == 2)
    {
        if (*p == '(')
        {
            ++p, x = expr(0), ++p;
        }
        else
        {
            for (x = 0; *p >= '0' && *p <= '9'; ++p)
            {
                x = x * 10 + *p - '0';
            }
        }
    }
    else
    {
        for (x = expr(lev + 1); strchr(op[lev], *p); x = y)
        {
            y = eval(x, expr(lev + 1), *p++);
        }
    }
    return x;
}

int main()
{
    f >> S;
    S += " ";
    g << expr(0);
    return 0;
}