小数点后反转去后导零提示 字符串越界,求助
查看原帖
小数点后反转去后导零提示 字符串越界,求助
944192
homi楼主2023/6/15 21:52

单独测试没有问题,放到这道题提示越界,请大佬看下谢谢

#include <bits/stdc++.h>
using namespace std;
string s,p;
bool f;
stack<char>st;
int cura,curb;
int main()
{
	cin>>s;
	curb=s.size()-1;
	int pos;
	//符号前反转 
	for(pos=0;pos<s.size()&&s[pos]<='9'&&s[pos]>='0';pos++)
	  st.push(s[pos]);
	while(!st.empty())
	{
		p+=st.top();
		st.pop();
	}
	for(int j=0;p[j]=='0'&&cura<pos;j++)
      cura++;
    cout<<p.substr(cura,curb-cura+1)<<s[pos];
    string p;
    int cura=pos+1,curb=s.size()-1;
//  符号后反转 
    if(s[pos]>='9'||s[pos]<='0')
    {  	
    	for(int i=pos+1;i<s.size();i++)
	      st.push(s[i]);
    	while(!st.empty())
    	{
    		p+=st.top();
    		st.pop();
	    }
	    if(s[pos]=='.')for(int j=s.size()-1;p[j]=='0'&&curb>pos+1;j--)//去后导零 
          curb--;
		else
		  for(int j=pos+1;p[j]=='0'&&cura<s.size();j--)
            cura++;
	}	
	cout<<p.substr(cura,curb-cura+1);
	return 0;
}
2023/6/15 21:52
加载中...