Cod sursa(job #1814862)

Utilizator ipus1Stefan Enescu ipus1 Data 24 noiembrie 2016 17:13:44
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include<cstdio>
#include<cstring>
using namespace std;
char v[100001];
int c,n;
int eval();
int termen();
int factor();
int eval()
    {int sum;
    sum=termen();
    while(c<n&&(v[c]=='+'||v[c]=='-'))
        if(v[c]=='+')
            {c++;
            sum+=termen();
            }
        else
            {c++;
            sum-=termen;
            }
    return sum;
    }
int termen()
    {int prod;
    prod=factor();
    while(c<n&&(v[c]=='*'||v[c]=='/'))
        if(v[c]=='*')
            {c++;
            prod*=factor();
            }
        else
            {c++;
            prod/=factor();
            }
    return prod;
    }
int factor()
    {int semn=1,val=0;
    while(v[c]=='-')
        {semn=-semn;
        c++;
        }
    if(v[c]=='(')
        {c++;
        val=eval();
        c++;
        return val;
        }
    else
        {while(c<n&&v[c]>='0'&&v[c]<='9')
            {val=val*10+v[c]-'0';
            c++;
            }
        return val;
        }
    }
int main ()
{freopen ("evaluare.in","r",stdin);
freopen ("evaluare.out","w",stdout);
scanf("%s",&v);
n=strlen(v);
c=0;
printf("%d",eval());
return 0;
}