Cod sursa(job #1826083)

Utilizator vladdy47Bucur Vlad Andrei vladdy47 Data 10 decembrie 2016 08:36:49
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
# include <bits/stdc++.h>

using namespace std;

const int Nmax = 1e5 + 5;

int ind = 1;
char s[Nmax];

int sum();

int get_chr()
{
    int ans = 0;

    while (s[ind] >= '0' && s[ind] <= '9')
        ans = ans * 10 + (s[ind] - '0'), ++ind;

    return ans;
}

int element()
{
    int ans;

    if (s[ind] == '(')
    {
        ++ind;
        ans = sum();
        ++ind;
    }

    else ans = get_chr();

    return ans;
}

int produs()
{
    int ans = element();

    while (s[ind] == '*' || s[ind] == '/')
        if (s[ind] == '*')  ++ind, ans *= element();
        else if (s[ind] == '/') ++ind, ans /= element();

    return ans;
}

int sum()
{
    int ans = produs();

    while (s[ind] == '+' || s[ind] == '-')
        if (s[ind] == '+') ++ind, ans += produs();
        else if (s[ind] == '-') ++ind, ans -= produs();

    return ans;
}

int main ()
{
    freopen("evaluare.in", "r", stdin);
    freopen("evaluare.out", "w", stdout);

    gets(s + 1);

    printf("%d\n", sum());

    return 0;
}