Cod sursa(job #3265015)

Utilizator Alexbora13Bora Ioan Alexandru Alexbora13 Data 26 decembrie 2024 14:40:10
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>

using namespace std;

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

 const int NMAX = 100000;

char v[NMAX+1];
char *p;

int numar(); int paranteza(); long long evaluare();

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

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

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

int main()
{
    fin >> v;
    p = v;
    fout << evaluare();
    return 0;
}