Cod sursa(job #2939155)

Utilizator Luka77Anastase Luca George Luka77 Data 13 noiembrie 2022 09:32:47
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <bits/stdc++.h>
using namespace std;

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

int pointer = 0;
string s;

int expresie();
int termen();
int factor();
int numar();

inline int expresie()
{
    int v = termen();
    while(s[pointer] == '+' || s[pointer] == '-')
    {
        if(s[pointer] == '+')
            pointer++, v += termen();
        else
            pointer++, v -= termen();
    }
    return v;
}

inline int termen()
{
    int v = factor();
    while(s[pointer] == '*' || s[pointer] == '/')
    {
        if(s[pointer] == '*')
            pointer++, v = v * factor();
        else
            pointer++, v = v / factor();
    }
    return v;
}

inline int factor()
{
    int v;
    if(s[pointer] == '(')
        pointer++, v = expresie(), pointer++;
    else
        v = numar();
    return v;
}

inline int numar()
{
    int v = 0;
    while(s[pointer] >= '0' && s[pointer] <= '9')
    {
        v = v*10 + (s[pointer] - '0');
        pointer++;
    }
    return v;
}

int main()
{
    fin >> s;
    fout << expresie();
}