Cod sursa(job #2858675)

Utilizator velciu_ilincavelciu ilinca velciu_ilinca Data 28 februarie 2022 10:49:04
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.31 kb
#include <fstream>

using namespace std;
ifstream in("evaluator.in");
ofstream out("evaluator.out");
string v;
int poz=0;
int opgrad2();
int opgrad3();
int opgrad1()
{
    int nr=opgrad2();
    int rez=nr;
    while(v[poz]=='+' || v[poz]=='-')
    {
        if(v[poz]=='+')
        {
            poz++;
            int nr2=opgrad2();
            rez=rez+nr2;
        }
        if(v[poz]=='-')
        {
            poz++;
            int nr2=opgrad2();
            rez=rez-nr2;
        }
    }
    return rez;
}
int opgrad2()
{
    int nr=opgrad3();
    int rez=nr;
    while(v[poz]=='*' || v[poz]=='/')
    {
        if(v[poz]=='*')
        {
            poz++;
            int nr2=opgrad3();
            rez=rez*nr2;
        }
        if(v[poz]=='/')
        {
            poz++;
            int nr2=opgrad3();
            rez=rez/nr2;
        }
   }
   return rez;
}
int opgrad3()
{
    if(v[poz]=='(')
    {
        poz++;
        int rez=opgrad1();
        poz++;
        return rez;
    }
    else
    {
        int nr=0;
        while(v[poz]>='0' && v[poz]<='9')
        {
              int cif=v[poz]-'0';
              nr=nr*10+cif;
              poz++;
        }
        return nr;
    }
}
int main()
{
    in>>v;
    out<<opgrad1();
    return 0;
}