Cod sursa(job #1363911)

Utilizator touristGennady Korotkevich tourist Data 27 februarie 2015 12:46:17
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <cstdio>

using namespace std;

char a[100005];
int poz=1;
int nr(),termen(),eval();

inline int nr()
{
    int x;
    for(x=0;a[poz]>='0' && a[poz]<='9';x=x*10+a[poz++]-'0');
    return x;
}

inline int factor()
{
    if(a[poz]=='(')
    {
        ++poz;
        int aux=eval();
        ++poz; return aux;
    }
    return nr();
}

inline int termen()
{
    int sol=factor();
    while(a[poz]=='*' || a[poz]=='/')
    {
        if(a[poz++]=='*') sol*=factor();
        else sol/=factor();
    }
    return sol;

}

inline int eval()
{
    int sol=termen();
    while(a[poz]=='+' || a[poz]=='-')
    {
        if(a[poz++]=='+') sol+=termen();
        else sol-=termen();
    }
    return sol;
}

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