Cod sursa(job #2851691)

Utilizator Matei_MunteanuMunteanu Matei Ioan Matei_Munteanu Data 19 februarie 2022 00:15:42
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.47 kb
#include <bits/stdc++.h>
using namespace std;
#define NMAX 1005
#define MOD 1009

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

string expression;
int index;
int element();
int factor();
int evaluate()
{
    int result = element();
    while (expression[index] == '+' || expression[index] == '-')
    {
        switch (expression[index])
        {
        case '+':
            index++;
            result += element();
            break;

        case '-':
            index++;
            result -= element();
            break;
        }
    }
    return result;
}
int element()
{
    int result = factor();
    while (expression[index] == '*' || expression[index] == '/')
    {
        switch (expression[index])
        {
        case '*':
            index++;
            result *= factor();
            break;

        case '/':
            index++;
            result /= factor();
            break;
        }
    }
    return result;
}
int factor()
{
    int result = 0;
    if (expression[index] == '(')
    {
        index++;
        result = evaluate();
        index++;
    }
    else
    {
        while (isdigit(expression[index]))
        {
            result = result * 10 + (expression[index] - '0');
            index++;
        }
        result = result;
    }
    return result;
}
int main()
{
    fin >> expression;
    fout << evaluate();
    fin.close();
    fout.close();
    return 0;
}