Cod sursa(job #2812571)

Utilizator tomaionutIDorando tomaionut Data 4 decembrie 2021 18:43:16
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>

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