Cod sursa(job #3213420)

Utilizator tomaionutIDorando tomaionut Data 13 martie 2024 09:41:21
Problema Evaluarea unei expresii Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>

using namespace std;

int n;
char s[100005];

int Termen();
int Factor();

int Eval()
{
    int x = Termen();
    if (s[n] == '+' or s[n] == '-')
    {
        switch (s[n])
        {
            case '+' : {n++; x += Termen(); break;}
            case '-' : {n++, x -= Termen(); break;}
        }
    }
    return x;
}

int Termen()
{
    int x = Factor();
    if (s[n] == '*' or s[n] == '/')
    {
        switch (s[n])
        {
            case '*' : {n++; x *= Factor(); break;}
            case '/' : {n++, x /= Factor(); break;}
        }
    }
    return x;
}

int Factor()
{
    int x;
    if (s[n] == '(')
    {
        n++;
        x = Eval();
        n++;
    }
    else
    {
        x = 0;
        while (isdigit(s[n]))
            x = x * 10 + s[n++] - '0';
    }
    return x;
}

int main()
{
    ifstream cin("evaluare.in");
    ofstream cout("evaluare.out");
    cin >> s;
    cout << Eval();

    return 0;
}