Cod sursa(job #1109564)

Utilizator RazvanR104Razvan-Andrei Ciocoiu RazvanR104 Data 17 februarie 2014 12:54:04
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <cstdio>

using namespace std;

char exp[100010];
int pz;

int p_1();

int p_3()
{
    int val = 1337, nr = 0;
    if (exp[pz] == '(')
    {
        ++pz;
        val = p_1();
        ++pz;
    }
    else if (exp[pz] >= '0' && exp[pz] <= '9')
    {
        for ( ; exp[pz] >= '0' && exp[pz] <= '9'; ++pz)
            nr = nr * 10 + exp[pz] - '0';
        val = nr;
    }
    return val;
}

int p_2()
{
    int val = p_3();
    while(exp[pz] == '*' || exp[pz] == '/')
    {
        if (exp[pz] == '*')
        {
            ++pz;
            val *= p_3();
        }
        else
        {
            ++pz;
            val /= p_3();
        }
    }
    return val;
}

int p_1()
{
    int val = p_2();
    while(exp[pz] == '+' || exp[pz] == '-')
    {
        if (exp[pz] == '+')
        {
            ++pz;
            val += p_2();
        }
        else
        {
            ++pz;
            val -= p_2();
        }
    }
    return val;
}

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

	gets(exp);
	printf("%d\n", p_1());

	fclose(stdout);
    return 0;
}