Cod sursa(job #2373742)

Utilizator stelian2000Stelian Chichirim stelian2000 Data 7 martie 2019 15:06:10
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

char v[100010];
int poz,l;

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

int solve()
{
    int ans=0,p=1;
    if(v[poz]=='-') {p=-1;poz++;}
    while(poz<l && v[poz]!=')')
    {
        if(v[poz]=='+') {ans+=p;p=1;poz++;}
        else if(v[poz]=='-') {ans+=p;p=-1;poz++;}
        else
        {
            int x,t=0;
            if(v[poz]=='*') {poz++;t=0;}
            else if(v[poz]=='/') {poz++;t=1;}
            if(v[poz]=='(') {poz++;x=solve();}
            else x=number();
            if(t==0) p*=x;
            else p/=x;
        }
    }
    ans+=p;
    poz++;
    return ans;
}

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