Cod sursa(job #719664)

Utilizator tudgal1001Profir Tudor tudgal1001 Data 21 martie 2012 22:41:10
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include<cstdio>
#define NMax 100005
using namespace std;

int i;
char sir[NMax];

int evalueaza ();

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

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

int evalueaza ()
{
    int rez=termen(),t2,sg;
    while (sir[i]=='+' || sir[i]=='-')
    {
        if (sir[i]=='+') sg=1;
        else sg=-1;
        i++;
        t2=termen()*sg;
        rez+=t2;
    }
    return rez;
}

int main ()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    scanf("%s",sir);
    printf("%d",evalueaza());
    return 0;
}