Cod sursa(job #2174116)

Utilizator alex_HarryBabalau Alexandru alex_Harry Data 16 martie 2018 10:50:08
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.41 kb
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int pos;
char Str[100005];
int evaluateExpresion();
int evaluateMultiplication();
int evaluateNumber();
int evaluateExpresion()
{
    int result = evaluateMultiplication();
    while(Str[pos] == '+' || Str[pos] == '-')
    {
        if(Str[pos] == '+')
    {
        ++pos;
        result += evaluateMultiplication();
    }
    else
    {
        ++pos;
        result -= evaluateMultiplication();
    }
    }

    return result;
}
int evaluateMultiplication()
{
    int result = evaluateNumber();
    while(Str[pos] == '*' || Str[pos] == '/')
    {
        if(Str[pos] == '*')
        {
            ++pos;
            result *= evaluateNumber();
        }
        else
        {
            ++pos;
            result /= evaluateNumber();
        }
    }
    return result;
}
int evaluateNumber()
{
    int result = 0;
    if(Str[pos] == '(')
    {
        ++pos;
        result = evaluateExpresion();
        ++pos;
    }
    else
    {
        int val = 0;
        while(Str[pos] >= '0' && Str[pos] <= '9')
        {
            val = val * 10 + Str[pos] - '0';
            ++pos;
        }
        result = val;
    }
    return result;
}
int main()
{
    f.getline(Str, 100005);
    g << evaluateExpresion() << "\n";
    return 0;
}