0分求助,本地正确
查看原帖
0分求助,本地正确
1066617
_ACGODs_楼主2024/10/4 22:51
#include<iostream>
#include<cctype>
using namespace std;
string str;
int div3(int m){
	if(m%3==2) return m/3+1;
	return m/3;
}
bool isvowel(char c){
	c=tolower(c);
	if(c=='a' || c=='e' || c=='i' || c=='o' || c=='u') return 1;
	return 0;
}
bool ispunc(char c){
	if(c=='.' || c==',' || c==':' || c==';' || c=='!' || c=='?' || c=='-' || c==' ') return 1;
	return 0;
}
string hint1(string a){
	string ans="";
	for(int i=0;i<a.length();i++){
		ans+=(ispunc(a[i])?a[i]:'.');
	}
	return ans;
}
string hint2(string a){
	int cnt=0;
	string h1=hint1(a),ans="";
	for(int i=0;i<a.length();i++){
		cnt+=bool(isalpha(a[i]));
	//	cout<<isalpha(a[i])<<' ';
	}
//	cout<<cnt<<endl;
	cnt=div3(cnt);
	for(int i=0;i<h1.length();i++){
		if(isalpha(a[i]) && cnt){
			cnt--;
			ans+=a[i];
		}
		else ans+=h1[i];
	}
	return ans;
//	return "a";
}
string hint3(string a){
	int cntv=0;
	string h2=hint2(a),ans="";
	for(int i=0;i<a.length();i++){
		if(h2[i]=='.' && a[i]!='.' && isvowel(a[i])) cntv++;
	}
	if(cntv==0){
		string h1=hint1(a);
		int cnt=0;
		for(int i=0;i<a.length();i++) cnt+=bool(isalpha(a[i]));
		cnt=div3(cnt*2);
		for(int i=0;i<h1.length();i++){
			if(isalpha(a[i]) && cnt){
				cnt--;
				ans+=a[i];
			}
			else ans+=h1[i];
		}
		return ans;
	}
	else{
		for(int i=0;i<h2.length();i++){
			if(h2[i]!='.') ans+=h2[i];
			else if(isvowel(a[i])) ans+=a[i];
			else ans+='.';
		}
		return ans;
	}
//	return "b";
}
int main(){
	getline(cin,str);
	cout<<hint1(str)<<endl;
	cout<<hint2(str)<<endl;
	cout<<hint3(str)<<endl;
	return 0;
}
2024/10/4 22:51
加载中...