Cod sursa(job #1249334)

Utilizator akaprosAna Kapros akapros Data 26 octombrie 2014 20:34:58
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,i,j,nr;
char s[100005],*p=s;
long eval();
long term();
long fact();
long eval()
{
    long val;
    val=term();
    while ((*p=='-')||(*p=='+'))
    {
        if (*p=='+') p++,val+=term();
        else p++,val-=term();
    }
    return val;
}
long term()
{
    long val;
    val=fact();
    while ((*p=='*')||(*p=='/'))
    {
        if (*p=='*') p++,val*=fact();
        else p++,val/=fact();
    }
    return val;
}
long fact()
{
    long val=0;
    if (*p=='(')
    {
         ++p;
         val=eval();
         p++;
    }
    else
    {
        while ((*p>='0')&&(*p<='9'))
        val=val*10+(*p-'0'),p++;
    }
    return val;
}
int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    gets(s+1); n=strlen(s+1); p++;
    printf("%d",eval());
    return 0;
}