Cod sursa(job #1571163)

Utilizator PaterucAPetruc Andrei Stefan PaterucA Data 17 ianuarie 2016 13:30:41
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>

using namespace std;

ifstream inf("evaluare.in");
ofstream outf("evaluare.out");

char E[100010], *p;
int s(), f(), b(), n();


int main()
{
    inf >> E;
    p = E;
    outf << s();

    return 0;
}
int s()
{
    int ret = f();

    while(*p == '+' || *p == '-')
    {
        if(*p == '+')
        {
            p++;
            ret+=f();
        }

        else
        {
            p++;
            ret-=f();
        }
    }

    return ret;
}

int f()
{
    int ret = b();

    while(*p == '*' || *p == '/')
    {
        if(*p == '*')
        {
            p++;
            ret*=b();
        }

        else
        {
            p++;
            ret/=b();
        }
    }

    return ret;
}

int b()
{
    int ret;

    if(*p == '(')
    {
        p++;
        ret = s();
        p++;
    }

    else
    {
        ret = n();
    }

    return ret;
}

int n()
{
    int ret = 0;
    while(*p >= '0' && *p <= '9')
    {
        ret = 10*ret + *p-'0';
        p++;
    }

    return ret;
}