Cod sursa(job #1455880)

Utilizator Theodor1000Cristea Theodor Stefan Theodor1000 Data 29 iunie 2015 12:51:05
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <cstdio>
#include <cstring>

using namespace std;

char ss[100010];
char *s;

inline int expr ();
inline int term ();

inline int eval ()
{
    int x = expr ();

    while (*s == '+' || *s == '-')
        if (*s == '+')
        {
            ++s;
            x += expr ();
        }

        else
        {
            ++s;
            x -= expr ();
        }

    return x;
}

inline int expr ()
{
    int x = term ();

    while (*s == '*' || *s == '/')
        if (*s == '*')
        {
            ++s;
            x *= term ();
        }

        else
        {
            ++s;
            x /= term ();
        }

    return x;
}

inline int term ()
{
    int x = 0;
    if (*s == '(')
    {
        ++s;
        x = eval ();
        ++s;
    }

    else while ('0' <= *s && *s <= '9')
    {
        x = x * 10 + *s - 48;
        ++s;
    }

    return x;
}

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

    gets (ss);
    s = ss;

    int sol = eval ();
    printf ("%d\n", sol);

    return 0;
}