编辑代码

//侯氏计算器V1.0
#include<iostream>
using namespace std;

long double x,y;
char op;
string s,h,st="+-*/^%=";
int l,t,t2,rk,isp;
bool f,ft;

int main()
{
    LOGO:for(;;)
    {
    t=f=0;
    isp=-1;
    getline(cin,s);
    for(int i=0;i<7;i++)
        if(s[0]==st[i])
        {
            s=to_string(x)+s;
            break;
        }
    s="+"+s;
    cout<<s<<"\n";
    l=s.length();
    for(int i=1;i<l;i++)
    {
        if(s[i]==')')
            rk=i;
        else if(s[i]=='+'||s[i]=='-')
            t=i;
        else if(s[i]=='*'||s[i]=='/'||s[i]=='%'||s[i]=='^')
        {
            for(int j=i+1;j<l;j++)
                if(s[j]=='*'||s[j]=='/'||s[j]=='%'||s[j]=='^'||s[j]=='('||s[j]==')'||s[j]=='+'||s[j]=='-'||s[j]=='=')
                {
                    if(t2>t)
                    {
                        h=s.substr(i,j-i);
                        s.erase(s.begin()+i,s.begin()+j-i);
                    }
                    else
                    {
                        h=s.substr(t,j-t);
                        s.erase(s.begin()+t,s.begin()+j-t);
                    }
                    s.insert(isp+1,h);
                    isp+=h.length();
                    cout<<h<<"\n";
                    break;
                }
            t2=i;
        }
    }
    if(s[0]=='+'||s[0]=='-')
        s="0"+s;
    /*for(int i=0;i<l;i++)
    {
        for(int j=0;j<7;j++)
            if(s[i]==st[i])
            {
                
                ft=1;
                break;
            }
        if(!ft&&s[i]!='.'&&(s[i]<'0'||s[i]>'9'))
        {
            cout<<"检测到非法字符,请重新输入。\n\a";
            goto LOGO;
        }
    }*/
    cout<<s<<"\n";
    break;
    }
    return 0;
}