Cod sursa(job #3278861)

Utilizator Alexbora13Bora Ioan Alexandru Alexbora13 Data 20 februarie 2025 21:58:21
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;

const int NMAX = 100000;

char s[NMAX+1], *p;

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

long long gr3(); long long gr2(); long long gr1();

long long gr1()
{
    int nr = 0;
    if(*p == '(')
        p++, nr = gr3(), p++;
    else
        while(isdigit(*p))
            nr = nr*10 + (*p - '0'), p++;
    return nr;
}

long long gr2()
{
    int nr = gr1();
    while(*p == '*' || *p == '/')
        if(*p == '*')p++, nr*=gr1();
        else if(*p == '/')p++, nr/=gr1();
    return nr;
}

long long gr3()
{
    int nr = gr2();
    while(*p == '+' || *p == '-')
        if(*p == '+')p++, nr+=gr2();
        else if(*p == '-') p++, nr-=gr2();
    return nr;
}

int main()
{
    fin >> s;
    p = s;
    fout << gr3();
    return 0;
}