Cod sursa(job #1916684)

Utilizator george_stelianChichirim George george_stelian Data 9 martie 2017 10:08:19
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

char sir[100010];
int poz;

int numar()
{
    int s=0;
    for(;'0'<=sir[poz] && sir[poz]<='9';poz++) s=s*10+sir[poz]-'0';
    return s;
}

int solve()
{
    int s=0,p=1;
    while(sir[poz]!=')')
        if(sir[poz]=='+') {s+=p;p=1;poz++;}
        else if(sir[poz]=='-') {s+=p;p=-1;poz++;}
        else
        {
            int t=0,x;
            if(sir[poz]=='/') {t=1;poz++;}
            if(sir[poz]=='*') poz++;
            if(sir[poz]=='(') {poz++;x=solve();}
            else x=numar();
            if(t==0) p*=x;
            else p/=x;
        }
    poz++;
    s+=p;
    return s;
}

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