Cod sursa(job #2427016)

Utilizator bogdanvladmihaiBogdan Vlad-Mihai bogdanvladmihai Data 30 mai 2019 15:51:42
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>

#define Nmax 100000

using namespace std;

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

int index = 0;

char S[1 + Nmax + 5];

int math ();

int fact ()
{
    int integer = 0, sign = 1;
    if (S[index] == '-')
        ++index, sign = -1;
    if (S[index] == '(')
    {
        ++index;
        integer = math ();
        ++index;
    }
    else while (isdigit (S[index]))
            integer = integer * 10 + S[index] - '0', ++index;
    return sign * integer;
}

int term ()
{
    int sum = fact ();
    while (S[index] == '*' || S[index] == '/')
        if (S[index++] == '*')
            sum *= fact ();
        else
            sum /= fact ();
    return sum;
}

int math ()
{
    int sum = term ();
    while (S[index] == '+' || S[index] == '-')
        if (S[index++] == '+')
            sum += term ();
        else
            sum -= term ();
    return sum;
}

int main()
{
    fin >> S;
    fout << math ();
    return 0;
}