Cod sursa(job #1957108)

Utilizator savulescustefanSavulescu Stefan savulescustefan Data 7 aprilie 2017 12:40:47
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <cstdio>

using namespace std;
int r,poz;
char s[100004];
int eval();
int factor ()
{
    int r=0;
    if (s[poz]=='(')
    {
        poz++;
        r=eval();
        poz++;
    }
    else
    {
        while (s[poz]>='0' && s[poz]<='9')
        {
            r=r*10+s[poz]-'0';
            poz++;
        }
    }
    return r;
}
int termen ()
{
    int r=factor();
    while (s[poz]=='*' || s[poz]=='/')
    {
        if (s[poz]=='*')
        {
            poz++;
            r*=factor();
        }
        else
        {
            poz++;
            r/=factor();
        }
    }
    return r;
}
int eval ()
{
    int r=termen();
    while (s[poz]=='+' || s[poz]=='-')
    {
        if (s[poz]=='+')
        {
            poz++;
            r+=termen();
        }
        else
        {
            poz++;
            r-=termen();
        }
    }
    return r;
}
int main()
{
    freopen ("evaluare.in","r",stdin);
    freopen ("evaluare.out","w",stdout);
    gets(s);
    poz=0;
    r=0;
    r=eval();
    printf ("%d\n", r);
    return 0;
}