90分求调
查看原帖
90分求调
1030039
Sunyuheng2114514楼主2025/7/31 11:05

第四个点有问题

#include<bits/stdc++.h>//变量有些冗杂 

using namespace std;
int y,f;
double n,n2,n3;
int n1,n4;// 
string s;
char ck[20]={'a','e','i','o','u','A','E','I','O','U'};
bool check(char a){
	for(int i=0;i<10;i++) if(a==ck[i]) return true;
	return false;
}
int main(){
	getline(cin,s);
	for(int i=0;i<s.size();i++){
		if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')) {
			cout<<".";
			check(s[i])?y++:f++;//元音字母个数计算 
			n1++;
			n++; //字母个数 
		}
		else cout<<s[i]; 
	}//第一行 
	cout<<"\n";
	n2=n;//记录 
	n/=3,n1/=3; //计算准确值与向下取整 
	if((n-n1)<(n1+1-n)) n=n1;//相当于n-0.333... 
	else n=n1+1;//向上取整 
	n3=n;//记录一下 
	for(int i=0;i<s.size();i++){
		if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')){
			if(--n>=0){
				cout<<s[i];//需要输出的字母数 
			}
			else cout<<".";
		}else cout<<s[i];//其他符号 
	}//第二行 
	cout<<"\n";
	n=n3;//记录 
	for(int i=0;i<s.size();i++){
		if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')){
			if(--n3>=0){
				if(n3==0) n4=i;//最后一个字母 
				if(check(s[i])) y--;//元音字母少了一个 
				cout<<s[i];
			}
		}else if(n3>0){
			cout<<s[i];//字母没输完 
		}
	}
	n1=n2;
	n2=n2*2/3,n1=n1*2/3;
	if((n2-n1)<(n1+1-n2)) n2=n1;
	else n2=n1+1;
	n2-=n;
	if(n4==0) n4=-1;
	if(y>0){//输出元音字母 
		for(int i=n4+1;i<s.size();i++){
			if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')){//是字母 
				if(check(s[i])) cout<<s[i];
				else cout<<".";//是辅音字母 
			}else{
				cout<<s[i];
			}
		}
	}else{
		for(int i=n4+1;i<s.size();i++){
			if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')){//是字母 
				if(--n2>=0){//计算还应输出多少字母 
					cout<<s[i];
				}else cout<<"."; 
			}else cout<<s[i];
		}
	}
	cout<<"\n";
	return 0;
}
2025/7/31 11:05
加载中...