Cod sursa(job #1785437)

Utilizator OFY4Ahmed Hamza Aydin OFY4 Data 21 octombrie 2016 12:13:42
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include <cstdio>
#include <cstring>

using namespace std;

int poz;
char s[1000010];

int sayiAl()
{
    int S = 0;
    for(; '0' <= s[poz] && s[poz] <= '9'; ++poz)
    {
        S = S * 10 + s[poz] - '0';
    }

    return S;
}

int coz()
{
    int S = 0, p = 1;

    while(s[poz] != ')')
    {
        if(s[poz] == '(')
        {
            ++poz;
            p*= coz();
        }
        else if(s[poz] == '*')
            ++poz;
        else if(s[poz] == '/')
        {
            ++poz;
            if(s[poz] = '(')
            {
                ++poz;
                p/= coz();
            }
            else p/= sayiAl();
        }
        else if('0' <= s[poz] && s[poz] <= '9')
            p*= sayiAl();
        else if(s[poz] == '+')
        {
            S+= p;
            p = 1;
            ++poz;
        }
        else if(s[poz] == '-')
        {
            S= p;
            p = -1;
            ++poz;
        }
    }
    S+= p;
    ++poz;

    return S;
}

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

    scanf("%s", &s);

    int n = strlen(s);

    s[n] = ')';

    printf("%d", coz());

    return 0;
}