Cod sursa(job #1224644)

Utilizator george_stelianChichirim George george_stelian Data 31 august 2014 15:42:29
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <cstdio>
#include <cstring>

using namespace std;

int nr,n;
char v[100010];

int getnumber()
{
    int s=0;
    while(nr<n && v[nr]>='0' && v[nr]<='9') s=s*10+v[nr++]-'0';
    return s;
}

int paranteza()
{
    int sol=0,s=0;
    while(nr<n && v[nr]!=')')
    {
        s=1;
        if(v[nr]=='-') {s=-1;nr++;}
        else if(v[nr]=='+') nr++;
        if(v[nr]=='(') {nr++;s*=paranteza();}
        else s*=getnumber();
        while(nr<n && v[nr]!=')' && v[nr]!='+' && v[nr]!='-')
            if(v[nr++]=='*')
                if(v[nr]=='(') {nr++;s*=paranteza();}
                else s*=getnumber();
            else
                if(v[nr]=='(') {nr++;s/=paranteza();}
                else s/=getnumber();
        sol+=s;
    }
    nr++;
    return sol;
}

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