逆波兰表达式改写(C++)

#include<iostream>
#include<cstring>

using namespace std;

class EV{
    public:
        EV(const int &vR, const int& vN)
        {
            result = vR;
            n =vN;
        }
        EV(){}
        int getResult() const
        {
            return result;
        }
        int getN() const
        {
            return n;
        }
        void setResult(const int& r)
        {
            result = r;
        }
        void setN(const int& N)
        {
            n = N;
        }
    private:
        int result, n ;

};

EV evaluate(const char* x)
{
    EV ev(0,0);
    EV v1, v2;
    if(*x == 0) return ev;
    if(x[0] >= '0' && x[0] <= '9')
    {
        ev.setResult(x[0] - '0') ;
        ev.setN(1);
        return ev;
    }
    v1 = evaluate(x + 1);
    v2 = evaluate(x + 1 + v1.getN());
    if(x[0] == '+') ev.setResult(v1.getResult() + v2.getResult());
    if(x[0] == '*') ev.setResult(v1.getResult() * v2.getResult());
    if(x[0] == '-') ev.setResult(v1.getResult() - v2.getResult());
    ev.setN(  1 + v1.getN() + v2.getN());
    return ev;
}

int main(int argc, char* argv[])
{
    string s = "-+3*5+261";
    const EV &ev = evaluate((char*)(s.c_str()));
    int res = ev.getResult();
    cout << res << endl;
    return 0;
}

 

上一篇:基于HTML5拖放API:目前市面上的一些修图工具软件带有自动为图片添加不同款式相框的功能,用户可以选择本地图片文件然后为其添加相框效果


下一篇:HTML 新全局特性