Cod sursa(job #1950788)

Utilizator papinub2Papa Valentin papinub2 Data 3 aprilie 2017 11:45:31
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cstring>

using namespace std;

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

int i;
char s[100010];

long termen();
long factor();

long eval()
{
    long r = termen();

    while (s[i] == '+' || s[i] == '-')
    {
        if (s[i] == '+')
        {
            i++;
            r = r + termen();
        }

        else

        {
            i++;
            r = r - termen();
        }
    }

    return r;
}

long termen()
{
    long r = factor();

     while (s[i] == '*' || s[i] == '/')
    {
        if (s[i] == '*')
        {
            i++;
            r = r * factor();
        }

        else

        {
            i++;
            r = r / factor();
        }
    }

    return r;
}

long factor()
{
    long r = 0;

    if (s[i] == '(')
    {
        i++;

        r = eval();

        i++;
    }

    else

    {
        while (s[i] >= '0' && s[i] <= '9')
        {
            r = r * 10 + s[i] - '0';
            i++;
        }
    }

    return r;
}

int main()
{
    in.get(s, 100010);

    out << eval();

    return 0;
}