蒟蒻求助!c++用的笨办法!
查看原帖
蒟蒻求助!c++用的笨办法!
492196
unusual_OIerkunkun楼主2023/4/1 22:45
#include<bits/stdc++.h>
using namespace std;

int main(){
int p1,p2,p3;
string s;
cin>>p1>>p2>>p3;
cin>>s;
int cnt,sum;
for(int i=0;i<s.size();i++){
	cnt=s[i]-'0';
		if(s[i]>='0'&&s[i]<='9'&&p1==1||s[i]>='0'&&s[i]<='9'&&p1==2){//小写 
		if(s[i]!='-'&&s[i+1]=='-'){//是否要扩 
			cout<<s[i];
			sum=s[i+2]-'0';
			if(p3==1){//正序
			if(sum<=cnt){
				cout<<"-";
				continue;
			} 
				for(int k=cnt+2;k<=sum;k++){
					for(int j=1;j<=p2;j++){
						char c=k+47;
						if(c!='-'){
							cout<<c;
						}
						
					}
				}
			}else{//逆序 
				for(int k=sum;k>=cnt+2;k--){
					for(int j=1;j<=p2;j++){
						char cc=k+47;
						if(cc!='-'){
							cout<<cc;
						}
						
					}
				}
			}
		}else{//是否要扩 
			if(s[i]!='-')cout<<s[i];
		}		
	}
	else if(p1==1){//小写 
		if(s[i]!='-'&&s[i+1]=='-'){//是否要扩 
			cout<<s[i];
			sum=s[i+2]-'0';
			if(p3==1){//正序
			if(sum<=cnt){
				cout<<"-";
				continue;
			} 
				for(int k=cnt+2;k<=sum;k++){
					for(int j=1;j<=p2;j++){
						char c=k+47;
						if(c!='-'){
							cout<<c;
						}
						
					}
				}
			}else{//逆序 
				for(int k=sum;k>=cnt+2;k--){
					for(int j=1;j<=p2;j++){
						char cc=k+47;
						if(cc!='-'){
							cout<<cc;
						}
						
					}
				}
			}
		}else{//是否要扩 
			if(s[i]!='-')cout<<s[i];
		}		
	}else if(p1==2){//大写 
		cnt=s[i]-'0'+15;
		if(s[i]!='-'&&s[i+1]=='-'){//是否要扩 
			cout<<s[i];
			sum=s[i+2]-'0'+15;
			if(sum<=cnt){
				cout<<"-";
				continue;
			}
			if(s[i]>='0'&&s[i]<='9'){
				cout<<s[i];
			}else{
				if(p3==1){//正序 
					for(int k=cnt+2;k<=sum;k++){
						for(int j=1;j<=p2;j++){
							char sc=k;
							if(sc!='-'){
								cout<<sc;
							}
							
						}
					}
				}else{//逆序 
					for(int k=sum;k>=cnt+2;k--){
						for(int j=1;j<=p2;j++){
							char ac=k;
							if(ac!='-'){
								cout<<ac;
							}
							
						}
					}
				}
			}
		}else{//是否要扩 
			if(s[i]!='-')cout<<s[i];
		}
	}else if(p1==3){//*号 
	cnt=s[i]-'0'; 
		if(s[i]!='-'&&s[i+1]=='-'){//是否要扩
		cout<<s[i]; 
			sum=s[i+2]-'0';
			if(sum<=cnt){
				cout<<"-";
				continue;
			} 
			for(int k=cnt+2;k<=sum;k++){
				for(int j=1;j<=p2;j++){
					cout<<"*";
				}
			}
		}else{//是否要扩 
			if(s[i]!='-')cout<<s[i];
		}
}
}
return 0;
}
//问题:无法做到连续‘-’时能保证输出的原‘-’号消失 并且输出连续‘-’
2023/4/1 22:45
加载中...