Cod sursa(job #1163013)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 1 aprilie 2014 09:19:36
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <cstdio>
#define Nmax 100005

using namespace std;

char sir[Nmax];
int poz;
int Expr();

inline int Factor()
{
    int sol;
    if(sir[poz]=='(')
    {
        ++poz;
        return Expr();
    }
    else
    {
        for(sol=0;sir[poz]>='0' && sir[poz]<='9';sol=sol*10+sir[poz]-'0',++poz);
        return sol;
    }
}

inline int Termen()
{
    int sol=Factor();
    while(sir[poz]=='*' || sir[poz]=='/')
    {
        if(sir[poz++]=='*')
            sol*=Factor();
        else
            sol/=Factor();
    }
    return sol;
}

inline int Expr()
{
    int sol=Termen();
    while(sir[poz]=='+' || sir[poz]=='-')
    {
        if(sir[poz++]=='+')
            sol+=Termen();
        else
            sol-=Termen();
    }
    ++poz;
    return sol;
}

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