Cod sursa(job #3157434)

Utilizator Robilika2007Robert Badea Robilika2007 Data 15 octombrie 2023 15:47:16
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>

using namespace std;

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

#define MAX_N 100000

string s;
int poz;

int adunare();

int inmultire();

int factor()
{
    int nr = 0;
    if(s[poz] == '(')
    {
        ++poz;
        nr = adunare();
        ++poz;
    }
    else while(s[poz] >= '0' && s[poz] <= '9')
    {
        nr = nr * 10 + s[poz] - '0';
        poz++;
    }
    return nr;
}

int inmultire()
{
    int nr = factor();
    while(poz < s.size() && (s[poz] == '*' || s[poz] == '/'))
    {
        if(s[poz++] == '/') nr /= factor();
        else nr *= factor();
    }
    return nr;
}

int adunare()
{
    int nr = inmultire();
    while(poz < s.size() && (s[poz] == '+' || s[poz] == '-'))
    {
        if(s[poz++] == '-') nr -= inmultire();
        else nr += inmultire();
    }
    return nr;
}


int main()
{
    in >> s;

    out << adunare();

    return 0;
}