Cod sursa(job #895523)

Utilizator tudy23Coder Coder tudy23 Data 27 februarie 2013 11:41:08
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <cstdio>
using namespace std;
char s[100001];
char *p=s;
int fact();
int term();
int eval()
{
    int r=fact();
    while(*p=='+'||*p=='-')
    {
        switch(*p)
        {
            case '+':
                *p++;
                r+=fact();
                break;
            case '-':
                *p++;
                r-=fact();
                break;
        }
    }
    return r;
}
int fact()
{
    int r=term();
    while(*p=='*'||*p=='/')
    {
        switch(*p)
        {
            case '*':
                *p++;
                r*=term();
                break;
            case '/':
                *p++;
                r/=term();
                break;
        }
    }
    return r;
}
int term()
{
    int r=0;
    if(*p=='(')
    {
        *p++;
        r=eval();
        *p++;
    }
    else
    {
        while(*p>='0'&&*p<='9')
            r=r*10+(*p++-'0');
    }
    return r;
}
int main()
{
    freopen("evaluare.in","r",stdin);
    scanf("%s",&s);
    freopen("evaluare.out","w",stdout);
    printf("%d\n",eval());
    return 0;
}