Cod sursa(job #3278601)

Utilizator Alexbora13Bora Ioan Alexandru Alexbora13 Data 20 februarie 2025 11:17:49
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");

const int NMAX = 100000;

int n;
char s[NMAX+1], *p;

long long nr(); long long chunk(); long long eval();

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

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

long long eval()
{
    int numar = chunk();
    while(*p == '+' || *p == '-')
    {
        if(*p == '+')
            p++, numar+=chunk();
        else if(*p == '-')
            p++, numar-=chunk();
    }
    return numar;
}

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