Cod sursa(job #2736582)

Utilizator dimi999Dimitriu Andrei dimi999 Data 3 aprilie 2021 17:29:07
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <bits/stdc++.h>
#define INF 1e9
using namespace std;

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

string s;
int poz;

int sum();
int prod();
int termen();

int sum()
{
    int x = prod();

    while(s[poz] == '+' || s[poz] == '-')
    {
        if(s[poz] == '+')
            poz++, x += prod();
        else
            poz++, x -= prod();
    }

    return x;
}

int prod()
{
    int x = termen();

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

    return x;
}

int termen()
{
    int x = 0;

    if(s[poz] == '(')
    {
        poz++;
        x = sum();
        poz++;
    }
    else
    {
        x = 0;

        while(s[poz] >= '0' && s[poz] <= '9')
            x = x * 10 + s[poz] - '0', poz++;
    }

    return x;
}

int main()
{
    fin >> s;

    fout << sum();
    return 0;
}