玄关!80pts求条
查看原帖
玄关!80pts求条
773371
Dreeick楼主2024/8/26 16:09

提交寄录

我的代码(马蜂混乱请见谅)

#include <iostream>
#include <algorithm>
#include <string>
#include <cctype>
#include <cmath>

using namespace std;

string s;
int letter,one_third_letters,two_thirds_letters;

int main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	auto if_reason = [](char c){
		c = tolower(c);
		return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
	};
	getline(cin,s);
	for(char c : s){
		cout << (isalpha(c)?'.':c);
	}
	cout << '\n';
	letter = count_if(s.begin(),s.end(),
		[](char c) -> bool{
			return isalpha(c);
		}
	);
	one_third_letters = round(letter/3.0);
	for(int i = 0,zm = 0;i < s.length();i++){
		if(zm < one_third_letters){
			if(isalpha(s[i])){
				zm++;
			}
			cout << s[i];
		}
		else{
			cout << (isalpha(s[i])?'.':s[i]);
		}
	}
	cout << '\n';
	if(any_of(s.begin() + one_third_letters,s.end(),if_reason)){
		for(int i = 0,zm = 0;i < s.length();i++){
			if(zm < one_third_letters){
				if(isalpha(s[i])){
					zm++;
				}
				cout << s[i];
			}
			else{
				if(if_reason(s[i])) cout << s[i];
				else cout << (isalpha(s[i])?'.':s[i]);
			}
		}
	}
	else{
		two_thirds_letters = round(letter*2/3.0);
		for(int i = 0,zm = 0;i < s.length();i++){
			if(zm < two_thirds_letters){
				if(isalpha(s[i])){
					zm++;
				}
				cout << s[i];
			}
			else{
				cout << (isalpha(s[i])?'.':s[i]);
			}
		}
	}

	return 0;
}

救救孩子……

2024/8/26 16:09
加载中...