Cod sursa(job #3278860)

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

const int NMAX = 100000;

char s[NMAX+1], *p;

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

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

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

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

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