
Morgas
6 год назад
Пожалуйста посчитайте,ПЖЛ!желательно C++ или паскаль(но мне хоть как-нибудь)Все буквы латинского алфавита делятся на гласные и согласные. Гласными буквами являются: a, e, i, o, u, y. Остальные буквы являются согласными.Слово называется благозвучным, если в этом слове не встречается больше двух согласных букв подряд и не встречается больше двух гласных букв подряд. Например, слова abba, mama, program — благозвучные, а слова aaa, school, search — неблагозвучные.Вводится слово. Если это слово является неблагозвучным, то разрешается добавлять в любые места этого слова любые буквы. Определите, какое минимальное количество букв можно добавить в это слово, чтобы оно стало благозвучным.Входные данныеВводится слово, состоящее только из маленьких латинских букв. Длина слова не превышает 30 символов.Выходные данныеВыведите минимальное число букв, которые нужно добавить в это слово, чтобы оно стало благозвучным.Комментарии к примерам тестов1. Слово уже является благозвучным.2. Достаточно добавить одну гласную букву, например, между буквами sи сПримерывходные данныеprogramвыходные данные0входные данныеschoolвыходные данные1
ОТВЕТЫ

Platon
Oct 24, 2020
#include <vector>
#include <algorithm>
using namespace std;
int main() {
string s;
vector<char> vowels = {'a','e','i','o','u','y'};
cin >> s;
int count_letters = 0; //сколько букв одной гласности подряд
int count = 0; // сколько букв добавить
int state = -1; //для гласности
int c = state; // для запоминания
for(int i = 0 ;i < s.length(); i++, c = state) {
if(find(vowels.begin(),vowels.end(),s[i])!= vowels.end())
state = 0;
else state = 1;
if(c==state) count_letters++;
if(count_letters == 3) {
count_letters = 1; //так как одна буква остается справа от разделяющей
count++;
}
}
cout << count;
}
#include <algorithm>
using namespace std;
int main() {
string s;
vector<char> vowels = {'a','e','i','o','u','y'};
cin >> s;
int count_letters = 0; //сколько букв одной гласности подряд
int count = 0; // сколько букв добавить
int state = -1; //для гласности
int c = state; // для запоминания
for(int i = 0 ;i < s.length(); i++, c = state) {
if(find(vowels.begin(),vowels.end(),s[i])!= vowels.end())
state = 0;
else state = 1;
if(c==state) count_letters++;
if(count_letters == 3) {
count_letters = 1; //так как одна буква остается справа от разделяющей
count++;
}
}
cout << count;
}
449
Смежные вопросы: