Cod sursa(job #1164759)

Utilizator ovidiu95Decean Ovidiu Ciprian ovidiu95 Data 2 aprilie 2014 12:05:13
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<cstdio>

using namespace std;

int r,i;
char w[100100];
int eval(),termen(),factor();

int eval()
{
    int r=termen();
    while(w[i]=='+' || w[i]=='-')
    {
        if(w[i]=='+') ++i,r+=termen();
        else ++i,r-=termen();
    }
    return r;
}

int termen()
{
    int r=factor();
    while(w[i]=='*' || w[i]=='/')
    {
        if(w[i]=='*') ++i,r*=factor();
        else ++i,r/=factor();
    }
    return r;
}

int factor()
{
    int r=0;
    if(w[i]=='(')
    {
        ++i;
        r=eval();
        ++i;
    }
    else while(w[i]>='0' && w[i]<='9')
    {
        r=r*10+w[i]-'0';
        ++i;
    }
    return r;

}

int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    scanf("%s",w);
    i=0;
    printf("%d\n",eval());
    return 0;
}