Cod sursa(job #2719278)

Utilizator dimi999Dimitriu Andrei dimi999 Data 9 martie 2021 19:00:11
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <bits/stdc++.h>
using namespace std;

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

string s;

int poz;

int Sum();
int Prod();
int termen();

int Sum()
{
    int sum = Prod();

    while(s[poz] == '+' || s[poz] == '-')
    {
        int semn;

        if(s[poz] == '+')
            semn = 1;
        else
            semn = -1;

        poz++;
        sum += semn * Prod();
    }

    return sum;
}

int Prod()
{
    int sum = termen();

    while(s[poz] == '*' || s[poz] == '/')
    {
        if(s[poz] == '*')
        {
            poz++;
            sum *= termen();
        }
        else
        {
            poz++;
            sum /= termen();
        }
    }

    return sum;

}

int termen()
{
    int nr = 0;

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

    return nr;
}

int main()
{
    fin >> s;
    fout << Sum();
    return 0;
}