60分求助
查看原帖
60分求助
124143
Countjoyyauldly楼主2020/6/17 15:07
#include<bits/stdc++.h>

using namespace std;

string s,a,q,spla,splb;
stack<char> r;
int j,y;
int u;
int pla,plb,ans;
bool flag;
int len;
int x,sum=-1;

void work(string s)
{
    pla=0;
    plb=0;
    if(s[s.length()-1]!='*'&&s[s.length()-1]!='+'&&s[s.length()-1]!='/'&&s[s.length()-1]!='-'&&s[s.length()-1]!='^')
        return;
    else for(int i=0;i<s.length();i++)
    {
        if(s[i]=='*'||s[i]=='-'||s[i]=='+'||s[i]=='/'||s[i]=='^')
        {
            j=i-2;
            //cout<<"i:"<<i<<" ";
            while(s[j]!=' ')
            {
                pla+=pow(10,i-j-2)*(s[j]-'0');
                j--;
                //cout<<"enter pla"<<" ";
            }
            //cout<<"pla:"<<pla<<" ";
            spla=to_string(pla);
            y=spla.length();
            j--;
            //cout<<"enter this";
            //cout<<"y:"<<y<<" ";
            while(s[j]!=' '&&j>=0)
            {
                sum++;
                //cout<<"y:"<<y<<" ";
                plb+=pow(10,sum)*(s[j]-'0');
                j--;
                //cout<<"enter plb"<<" ";
                //cout<<"plb:"<<plb<<" ";
            }
            //cout<<"sum:"<<sum<<" ";
            //cout<<"plb:"<<plb<<" ";
            splb=to_string(plb);
            x=splb.length();
            j++;
            if(s[i]=='*')
                ans=pla*plb;
            if(s[i]=='-')
                ans=plb-pla;
            if(s[i]=='+')
                ans=pla+plb;
            if(s[i]=='/')
                ans=plb/pla;
            if(s[i]=='^')
                ans=pow(plb,pla);
            //cout<<"ans:"<<ans<<" ";
            q= to_string(ans);
            //cout<<"q:"<<q<<" ";
            //cout<<"j:"<<j<<" ";
            len=q.length();
            s.erase(i,1);
            s.erase(j,x+y+2);
            s.insert(j,q);
            sum=-1;
            break;
        }

    }
//cout<<j<<endl;
cout<<s<<endl;
work(s);
//cout<<"?";
}
int main(){
	cin >> s;
	for (int i=0;i<s.length();++i){
		if (s[i]>='0' && s[i]<='9') a += s[i];
		else {
			if (s[i]=='+' || s[i]=='-'){
				while (!r.empty() && r.top()!='(') {
					a += r.top();
					r.pop();
				}
			  r.push(s[i]);
			}
			else if (s[i]=='*' || s[i]=='/'||s[i]=='^') {
				while (!r.empty() && r.top()!='(' && r.top()!='+' && r.top()!='-') {
					a += r.top();
					r.pop();
				}
			  r.push(s[i]);
			}
			else if (s[i]==')'){
				while (r.top()!='('){
					a += r.top();
					r.pop();
				}
				r.pop();
			} else {
				r.push(s[i]);
			}
		}
	}
	while (!r.empty()){
		a += r.top();
		r.pop();
	}
	for(int i=1;i<a.length();i+=2)
    {
        a.insert(i," ");
    }
	cout<<a<<endl;
	work(a);
	return 0;
}

帮忙看看?qwq re4个点,wa一个

2020/6/17 15:07
加载中...