Cod sursa(job #2717787)

Utilizator bibiancapitu2004Pitu Bianca bibiancapitu2004 Data 7 martie 2021 22:21:13
Problema Evaluarea unei expresii Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <fstream>
#include<string>

using namespace std;
ifstream cin("evaluere.in");
ofstream cout("evaluare.out");

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

int idx;
char s[100005];

int expresie()
{
    int rez = termen();
    while(s[idx] == '+' || s[idx] == '-')
    {
        if(s[idx] == '+')
        {
            idx ++;
            rez += termen();
        }
        else{
            idx ++;
            rez -= termen();
        }
    }
    return rez;
}
int termen()
{
    int rez = factor();
    while(s[idx] == '*' || s[idx] == '/')
    {
        if(s[idx] == '*')
        {
            idx ++;
            rez *= factor();
        }
        else{
            idx ++;
            rez /= factor();
        }
    }
    return rez;
}
int factor()
{
    int rez = 0;
    if(s[idx] == '(' )
    {
        idx ++;
        rez = expresie();
        idx ++;
    }
    else{
        while(s[idx] >= '0' && s[idx] <= '9')
        {
            rez = rez * 10 + s[idx] - '0';
            idx ++;
        }
    }
    return rez;
}

int main()
{
    cin >> s;
    idx = 0;

    cout << expresie();

    return 0;
}