Cod sursa(job #2427017)

Utilizator bogdanvladmihaiBogdan Vlad-Mihai bogdanvladmihai Data 30 mai 2019 15:53:24
Problema Evaluarea unei expresii Scor 100
Compilator cpp-32 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>

#define Nmax 100000

using namespace std;

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

int indexx = 0;

char S[1 + Nmax + 5];

int math ();

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

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

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

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