Cod sursa(job #602613)

Utilizator TeodoraTanaseTeodora Tanase TeodoraTanase Data 12 iulie 2011 02:35:13
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <cstdio>
#include <iostream>
#define N 100005

using namespace std;

char a[N];
int i;

int unu();
int doi();
int trei();

int unu()
{
    int r = doi();
    if (a[i] == '+')
    {
        ++i;
        r += doi();
    }
    else if (a[i] == '-')
    {
        ++i;
        r -= doi();
    }
    return r;
}

int doi()
{
    int r = trei();
    if (a[i] == '*')
    {
        ++i;
        r *= trei();
    }
    else if (a[i] == '/')
    {
        ++i;
        r /= trei();
    }
    return r;
}

int trei()
{
    int r = 0;
    if (a[i] == '(')
    {
        ++i;
        r = unu();
        ++i;
    }
    else
        while (isdigit(a[i]))
        {
            r = r*10 + a[i]-'0';
            ++i;
        }
    return r;
}

int main()
{
    freopen ("evaluare.in", "r", stdin);
    freopen ("evaluare.out", "w", stdout);
    fgets (a, N, stdin);
    printf ("%d\n", unu());
    return 0;
}