Cod sursa(job #1088665)

Utilizator bodyionitaIonita Bogdan Constantin bodyionita Data 20 ianuarie 2014 18:40:41
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <cstdio>
using namespace std;
char S[100001], *p;
int eval();
int factor();
int termen();
int main()
{
    freopen("evaluare.in", "r", stdin);
    freopen("evaluare.out", "w", stdout);
    gets(S);
    p=S;
    printf("%d\n", eval() );
    return 0;
}
int eval()
{
    int r=termen();
    while (*p=='+' || *p=='-')
        if (*p=='+')
        {
            p++;
            r+=termen();
        }
        else
        {
            p++;
            r-=termen();
        }
    return r;
}
int termen()
{
    int r=factor(),x;
    while (*p=='*' || *p=='/')
        if (*p=='*') {p++;r*=factor();}
        else {p++;x=factor();if (x) r/=x;}
    return r;
}
int factor()
{
    int r=0;
    if (*p=='(')
        {
            p++;
            r=eval();
            p++;
        }
    else while (*p>='0' && *p<='9') r=r*10+(*p-'0'),p++;
    return r;
}