Cod sursa(job #1907166)

Utilizator RaduGiucleaGiuclea Radu RaduGiuclea Data 6 martie 2017 18:05:12
Problema Evaluarea unei expresii Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 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]!=')')
        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);
    int j=1;
    while(scanf("%c",&v[j])!=-1)
            j++;
    v[0]='(';
    int l=strlen(v);
    v[--l]=')',v[++l]=')';
    printf("%d",exp());
    return 0;
}