Cod sursa(job #1910481)

Utilizator RaduGiucleaGiuclea Radu RaduGiuclea Data 7 martie 2017 17:07:54
Problema Evaluarea unei expresii Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <cstdio>
#include <cstring>
using namespace std;
char v[100010],p;
int exp();
int term();
int fact();
int exp()
{
    int x;
    x=term();
    while(v[p]=='+'||v[p]=='-')
        if(v[p]=='+')
            p++,x+=term();
        else p++,x-=term();
    return x;
}
int term()
{
    int x;
    x=fact();
    while(v[p]=='*'||v[p]=='/')
        if(v[p]=='*')
            p++,x*=fact();
        else p++,x/=fact();
    return x;
}
int fact()
{
    int x;
    if(v[p]=='(')
        p++,x=exp(),p++;
    else
    {
        x=0;
        while(v[p]<='9'&&v[p]>='0')
            x=x*10+v[p]-'0',p++;
    }
    return x;
}
int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    scanf("%s",v);
    printf("%d",exp());
    return 0;
}