Cod sursa(job #2905812)

Utilizator _andrei4567Stan Andrei _andrei4567 Data 23 mai 2022 20:12:55
Problema Evaluarea unei expresii Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
///expresie = term + term;
///term = fact * fact;
///fact = numar || expresie

#include <fstream>
#include <string>
#define int long long
using namespace std;

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

int i;

int term();
int fact();

string s;

int expresie ()
{
    int numar = term();
    if (s[i] == '+' || s[i] == '-')
    {
        if (s[i] == '+')
            ++i, numar += term();
        else
            ++i, numar -= term();
    }
    return numar;
}
int term()
{
    int numar = fact();
    if (s[i] == '/' || s[i] == '*')
    {
        if (s[i] == '/')
            ++i, numar /= fact();
        else
            ++i, numar *= fact();
    }
    return numar;
}

int fact()
{
    int numar = 0;
    if (s[i] == '(')
    {
        ++i;
        numar = expresie();
        ++i;
    }
    else
    {
        while (isdigit(s[i]))
            numar *= 10, numar += s[i] - '0', ++i;
    }
    return numar;

}


signed main()
{
    cin >> s;
    cout << expresie() << '\n';
    return 0;
}