Cod sursa(job #3139012)

Utilizator SSKMFSS KMF SSKMF Data 24 iunie 2023 10:17:38
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.29 kb
#include <fstream>
using namespace std;

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

char sir[100001];
int indice;

int Expresie();

int Constanta () 
{
    int valoare = 0;
    while ('0' <= sir[indice] && sir[indice] <= '9')
        valoare = 10 * valoare + (sir[indice++] - '0');

    return valoare;
}

int Factor ()
{
    int factor;
    if (sir[indice] == '(')
        indice++ , factor = Expresie() , indice++;
    else
        factor = Constanta();

    return factor;
}

int Termen ()
{
    int termen = Factor();
    while (sir[indice] == '*' || sir[indice] == '/')
        switch (sir[indice])
        {
            case '*': indice++ , termen *= Factor();
                break;
            case '/': indice++ , termen /= Factor();
                break;
        }

    return termen;
}

int Expresie ()
{
    int rezultat = Termen();
    while (sir[indice] == '+' || sir[indice] == '-')
        switch (sir[indice]) 
        {
            case '+': indice++ , rezultat += Termen();
                break;
            case '-': indice++ , rezultat -= Termen();
                break;
        }

    return rezultat;
}

int main ()
{
    cin >> sir;
    cout << Expresie();
    cout.close(); cin.close();
    return 0;
}