#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一个