Cod sursa(job #2737729)

Utilizator moise_alexandruMoise Alexandru moise_alexandru Data 5 aprilie 2021 01:21:26
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
const int maxn = 100005;
char T[maxn];
int i = 1;

int factor();
int eval();

int numar()
{
    if(T[i] == '(')
    {
        i++;
        int aux = eval();
        i++;
        return aux;
    }
    int nr = 0;
    while(isdigit(T[i]))
        nr = nr * 10 + T[i++] - '0';
    return nr;
}

int factor()
{
    int rez = numar();
    while(T[i] == '*' || T[i] == '/')
    {
        if(T[i] == '*')
        {
            i++;
            rez = rez * numar();
        }
        else
        {
            i++;
            rez = rez / numar();
        }
    }
    return rez;
}

int eval()
{
    int rez = factor();
    while(T[i] == '-' || T[i] == '+')
    {
        int semn = 1;
        if(T[i] == '-')
            semn = -1;
        i++;
        rez = rez + factor() * semn;
    }
    return rez;
}

int main()
{
    in.getline(T + 1, maxn);
    out << eval();
    return 0;
}