Cod sursa(job #2089306)

Utilizator TavinciStefanescu Octavian Tavinci Data 16 decembrie 2017 12:34:36
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb
#include <fstream>

using namespace std;

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

    string s;
    int termen(int &ind);
    int factor(int &ind);
    int eval();
    bool is_op1(char l)
    {
        if(l=='+' || l=='-')
            return 1;
        return 0;
    }
    bool is_op2(char l)
    {
        if(l=='*' || l=='/')
            return 1;
        return 0;
    }
    int factor(int &ind)
    {
        int nr=0;
        while(ind!=s.size() && isdigit(s[ind]))
        {
            nr=nr*10+s[ind++]-'0';
        }

        return nr;
    }
    int termen(int &ind)
    {
        int p=factor(ind);
        while(ind!=s.size() && is_op2(s[ind]))
        {
            if(s[ind]=='*')
                p*=factor(++ind);
            else
                p/=factor(++ind);
        }
        return p;
    }
    int eval()
    {
        int ind=0, sign;
        int a=termen(ind);
        while(ind!=s.size() && is_op1(s[ind]))
        {
            sign=1;
            if(s[ind]=='-')
                sign=-1;
            a+=sign*termen(++ind);
        }
        return a;
    }

int main()
{
    fin>>s;
/*    for(int i=0;i<s.size;i++)
    {
        if(s[i]=='(')
        {

        }
    }*/
    fout<<eval();
    return 0;
}