Cod sursa(job #1785441)

Utilizator OFY4Ahmed Hamza Aydin OFY4 Data 21 octombrie 2016 12:18:22
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;
}