Cod sursa(job #2865485)

Utilizator tomaionutIDorando tomaionut Data 8 martie 2022 20:52:54
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[100005];
int n = 1;
int Termen();
int Factor();
int Eval()
{
    int r = Termen();
    while (s[n] == '+' or s[n] == '-')
    {
        switch (s[n])
        {
        case '+': {n++; r += Termen(); break; }
        case '-': {n++; r -= Termen(); break; }
        }
    }
    return r;
}
int Termen()
{
    int r = Factor();
    while (s[n] == '*' or s[n] == '/')
    {
        switch (s[n])
        {
        case '*': {n++; r *= Factor(); break; }
        case '/': {n++; r /= Factor(); break; }
        }
    }
    return r;
}
int Factor()
{
    int r;
    if (s[n] == '(')
    {
        n++;
        r = Eval();
        n++;
    }
    else
    {
        r = 0;
        while (isdigit(s[n]))
        {
            r = r * 10 + s[n] - '0';
            n++;
        }

    }
    return r;
}
int main()
{
    fin >> (s + 1);
    fout << Eval();
    return 0;
}