Cod sursa(job #1961486)

Utilizator circeanubogdanCirceanu Bogdan circeanubogdan Data 11 aprilie 2017 10:07:52
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <fstream>

using namespace std;

ifstream f("evaluare.in");
ofstream g("evaluare.out");

int i = 1;

char sir[100002];

int evalueaza();

int termen();

int factor();

int main()
{
    f>>sir+1;
    g<<evalueaza();
    return 0;
}

int evalueaza()
{
    int r = termen();
    while( sir[i] == '+' || sir[i] == '-' )
    {
        if( sir[i] == '+' )
        {
            ++i;
            r+=termen();
        }
        else
        {
            ++i;
            r-=termen();
        }
    }
    return r;
}

int termen()
{
    int r = factor();
    while( sir[i] == '*' || sir[i] == '/' )
    {
        if( sir[i] == '*' )
        {
            ++i;
            r *= factor();
        }
        if( sir[i] == '/' )
        {
            ++ i;
            r /= factor();
        }
    }
    return r;
}

int factor()
{
    int r = 0;
    if( sir[i] == '(' )
    {
        ++i;
        r = evalueaza();
        ++i;
    }
    else
    {
        while( sir[i] >= '0' && sir[i] <= '9' )
        {
            r = r * 10 + sir[i] - '0';
            ++i;
        }
    }
    return r;
}