Cod sursa(job #1626196)

Utilizator binicBinica Nicolae binic Data 2 martie 2016 23:26:19
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<cstdio>
using namespace std;
int ras,i;
char s[100004];
int suma();
int termen();
int factor();
int suma()
{
    int x=0;
    x=termen();
    while(s[i]=='+'||s[i]=='-')
    {
        i++;
        if(s[i-1]=='+')x=x+termen();
        else x=x+termen();
    }
    return x;
}
int termen()
{
    int x=0;
    x=factor();
    while(s[i]=='*'||s[i]=='/')
    {
        i++;
        if(s[i-1]=='*')x=x*factor();
        else x=x/factor();
    }
    return x;
}
int factor()
{
    int x=0;
    if(s[i]=='(')
    {
        i++;
        x=suma();
        i++;
    }
    else
        while(s[i]>='0'&&s[i]<='9')
            x=x*10+s[i]-'0',i++;
    return x;
}
int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    gets(s+1);
    i=1;
    ras=suma();
    printf("%d",ras);
    return 0;
}