Cod sursa(job #896601)

Utilizator nrpcCiprian Stirbu nrpc Data 27 februarie 2013 16:22:10
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <cstdio>
using namespace std;
char v[100001];
int k=0;
int termen();
int factor();
int evaluare()
{
    int exp=termen();
    while(v[k]=='+'||v[k]=='-')
    {
        k++;
        if (v[k-1]=='+')exp+=termen();
        else exp-=termen();
    }
    return exp;
}
int termen()
{
    int exp=factor();
    while(v[k]=='*'||v[k]=='/')
    {
        k++;
        if(v[k-1]=='*')exp*=factor();
        else exp/=factor();
    }
    return exp;
}
int factor()
{
    int exp=0;
    if(v[k]=='(')
    {
        k++;
        exp=evaluare();
        k++;
    }
    while('0'<=v[k]&&'9'>=v[k])
    {
        exp=exp*10+v[k]-'0';
        k++;
    }
    return exp;
}
int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    scanf("%s",v);
    printf("%d",evaluare());
    return 0;
}