Cod sursa(job #2721176)

Utilizator toma_ariciuAriciu Toma toma_ariciu Data 11 martie 2021 16:57:18
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include <fstream>

using namespace std;

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

string s;
int curr;

int prio1();
int prio2();
int prio3();

int prio3()
{
    int nr=prio2();
    while(s[curr]=='+' || s[curr]=='-')
    {
        if(s[curr]=='+')
        {
            curr++;
            nr+=prio2();
        }
        else
        {
            curr++;
            nr-=prio2();
        }
    }
    return nr;
}

int prio2()
{
    int nr=prio1();
    while(s[curr]=='*' || s[curr]=='/')
    {
        if(s[curr]=='*')
        {
            curr++;
            nr*=prio1();
        }
        else
        {
            curr++;
            nr/=prio1();
        }
    }

    return nr;
}

int prio1()
{
    int nr=0;
    if(s[curr]=='(')
    {
        curr++;
        nr=prio3();
        curr++;
    }
    else
    {
        while(isdigit(s[curr]))
        {
            nr*=10;
            nr+=s[curr]-'0';
            curr++;
        }
    }

    return nr;
}

int main()
{
    fin>>s;
    fout<<prio3()<<'\n';
    return 0;
}