求助
查看原帖
求助
705483
beikuixiangyang7011楼主2023/3/11 22:11

50分求助,自己检测发现顺序输出时只有最后一位字母,逆序输出是最后一位字母多输出一次(蒟蒻不会做题,只会模拟)

/*
	Name:字符串的展开 
	Date:2023/03/11
*/
#include<bits/stdc++.h>
using namespace std;
int main(){
	int p1,p2,p3;
	string s;
	char ch,k;
	cin>>p1>>p2>>p3>>s;
	for(int i=0;i<s.size();i++){
		if(s[i]=='-'){
			if(p1==1){
				if(s[i-1]<s[i+1]&&(s[i+1]-s[i-1])<27&&s[i-1]+1!=s[i+1]){
					if(p3==2)
						for(char k=s[i+1]-1;k>s[i-1];k--){
							if(s[i-1]<97&&s[i-1]>58) ch=k+32;
							else ch=k; 
							//cout<<k;
							for(int j=1;j<=p2;j++)
								cout<<ch;
						}
					else
						for(char k=s[i-1]+1;k<s[i+1];k++){
							if(s[i-1]<97&&s[i-1]>58) ch=k+32;
							else ch=k;
							//cout<<k;  
							for(int j=1;j<=p2;j++)
								cout<<ch;	
							}
				}
				else{
					if(s[i-1]<s[i+1]&&(s[i+1]-s[i-1])<27&&s[i-1]+1!=s[i+1])
						for(char k=s[i-1]+1;k<s[i+1];k++)
							cout<<"*";
					else
						cout<<s[i];
				}
			}
			if(p1==2){
				if(s[i-1]<s[i+1]&&(s[i+1]-s[i-1])<27&&s[i-1]+1!=s[i+1]){
					if(p3==2)
						for(char k=s[i+1]-1;k>s[i-1];k--){
							if(s[i-1]<97) ch=k;
							else ch=k-32;
							//cout<<k; 
							for(int j=1;j<=p2;j++)
								cout<<ch;
						}
					else
						for(char k=s[i-1]+1;k<s[i+1];k++)
							if(s[i-1]<97) ch=k;
							else ch=k-32;
							//cout<<k; 
							for(int j=1;j<=p2;j++)
								cout<<ch;
				}
				else{
					if(s[i-1]+1==s[i+1])
						continue;
					cout<<s[i];
				}
			}
			if(p1==3){
				if(s[i-1]<s[i+1]&&(s[i+1]-s[i-1])<27&&s[i-1]+1!=s[i+1])
					for(char k=s[i-1]+1;k<s[i+1];k++)
						cout<<"*";
				else
					cout<<s[i];
			}	
		}
		else cout<<s[i];
	}
	return 0;
}

2023/3/11 22:11
加载中...