Cod sursa(job #3261435)

Utilizator Alexbora13Bora Ioan Alexandru Alexbora13 Data 5 decembrie 2024 20:32:38
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>
#define int long long
using namespace std;

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

const int NMAX = 100000;
char s[NMAX+1], *p;

int numar(); int expresie(); int eval();

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

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

int eval()
{
    int exp = expresie();
    while(*p == '+' || *p == '-')
    {
        if(*p == '-')p++, exp-=expresie();
        else if(*p == '+')p++, exp+=expresie();
    }
    return exp;
}

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