Cod sursa(job #2926591)

Utilizator Nitoi_BogdanNitoi Andrei-Bogdan Nitoi_Bogdan Data 18 octombrie 2022 09:35:20
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>

using namespace std;

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

string s;
int caracter=0;
int e();
int expresie();
int factor();

int expresie()
{
    int raspuns = factor();
    while (s[caracter] == '+' || s[caracter] == '-') {
        if (s[caracter] == '+') {
            caracter++;
            raspuns += factor();
        } else {
            caracter++;
            raspuns -= factor();
        }
    }
return raspuns;
}

int factor()
{
    int raspuns = e();
    while (s[caracter] == '*' || s[caracter] == '/') {
        if (s[caracter] == '*') {
            caracter++;
            raspuns *= e();
        } else {
            caracter++;
            raspuns /= e();
        }
    }
return raspuns;
}

int e()
{
    int raspuns=0;
    if(s[caracter]=='(')
    {
        caracter++;
        raspuns=expresie();
        caracter++;

    }
    else
    {
        int nr=0;
        while(s[caracter] >= '0' && s[caracter] <= '9')
        {
            nr=nr*10+(s[caracter]-'0');
            caracter++;
        }
        raspuns+=nr;
    }

    return raspuns;
}


int main()
{
    cin >> s;
    cout << expresie();
    return 0;
}