Cod sursa(job #2896971)

Utilizator LucaMuresanMuresan Luca Valentin LucaMuresan Data 1 mai 2022 19:58:53
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>

using namespace std;

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

string s;
int n, i = 0;

int factor();
int termen();

int expresie()
{
    int sum = termen();

    while (s[i] == '+' || s[i] == '-')
    {
        if (s[i] == '+')
            i++, sum += termen();
        else
            i++, sum -= termen();
    }

    return sum;
}

int termen()
{
    int p = factor();

    while (s[i] == '*' || s[i] == '/')
    {
        if (s[i] == '*')
            i++, p *= factor();
        else
            i++, p /= factor();
    }

    return p;
}

int factor()
{
    int val = 0, semn = 1;
    while (s[i] == '-')
        i++, semn = -semn;

    if (s[i] == '(')
    {
        i++;
        val = expresie();
        i++;
        return val * semn;
    }

    while (isdigit(s[i]))
    {
        val = val * 10 + s[i] - '0';
        i++;
    }

    return val * semn;
}

int main()
{
    in >> s;
    out << expresie();

    return 0;
}