Cod sursa(job #2874917)

Utilizator beingsebiPopa Sebastian beingsebi Data 20 martie 2022 15:09:57
Problema Evaluarea unei expresii Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>
using namespace std;

ifstream f("evaluare.in");
ofstream g("evaluare.out");
// #define f cin
// #define g cout
string s;
int n, i;
int expresie();
int termen();
int factor();
int32_t main()
{
    f >> s;
    g << expresie();
    return 0;
}
int expresie()
{
    int r = termen();
    while (i < s.size() && (s[i] == '+' || s[i] == '-'))
        if (s[i] == '+')
            i++, r += termen();
        else
            i++, r -= termen();
    return r;
}
int termen()
{
    int r = factor();
    while (i < s.size() && (s[i] == '*' || s[i] == '/'))
        if (s[i] == '*')
            i++, r *= termen();
        else
            i++, r /= termen();
    return r;
}
int factor()
{
    int r = 0;
    if (i >= s.size())
        return 0;
    if (s[i] == '(')
        i++, r = expresie(), i++;
    else
        while (i < s.size() && isdigit(s[i]))
            r = r * 10 + s[i] - '0', i++;
    return r;
}