Cod sursa(job #3294046)

Utilizator stefanchpStefan Chiper stefanchp Data 15 aprilie 2025 13:37:27
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>
#define N 100005
using namespace std;
char s[N], * p = s;

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

long long Termen();
long long Factor();
long long Eval()
{
    long long r = Termen();
    while (*p == '+' || *p == '-')
        switch (*p)
        {
        case '+': ++p; r += Termen(); break;
        case '-': ++p; r -= Termen(); break;
        }
    return r;
}

long long Termen()
{
    long long r = Factor();
    while (*p == '*' || *p == '/')
        switch (*p)
        {
        case '*': ++p; r *= Factor(); break;
        case '/': ++p; r /= Factor(); break;
        }
    return r;
}
long long Factor()
{
    long long r = 0;
    if (*p == '(') { ++p; r = Eval(); ++p; }
    else
    {
        while (*p >= '0' && *p <= '9')
        {
            r = r * 10 + *p - '0';
            ++p;
        }
    }
    return r;
}
int main()
{
    fin.get(s, N);
    fout << Eval();
    return 0;
}