Cod sursa(job #624074)

Utilizator cristianalex81Cristian Alexandru cristianalex81 Data 21 octombrie 2011 17:34:42
Problema Evaluarea unei expresii Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 1 kb
#include <stdio.h>
#define dim 100001

char string[dim],*p=string;

long priority1();
long priority2();
long priority3();

long priority1()
{
    long r=priority2();
    if (*p=='+')
    {
        p++;
        r+=priority2();
    }
    if (*p=='-')
    {
        p++;
        r-=priority2();
    }
    return r;
}

long priority2()
{
    long r=priority3();
    if (*p=='*')
    {
        p++;
        r*=priority3();
    }
    if(*p=='/')
    {
        p++;
        r/=priority3();
    }
    return r;
}

long priority3()
{
    long r=0;
    if (*p=='(')
    {
        p++; //jump over opening parantheses
        r = priority1(); // elavluate inner expresion
        p++; //jump over closing parantheses
    }
    else
    {
        while ((*p>='0')&&(*p<='9'))
        {
            r = r*10 + *p-'0';
            p++;
        }
    }
    return r;
}

int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    scanf("%s",string);
    printf("%ld\n",priority1());
    return 0;
}