Не выводятся слова, начинающиеся с согласных - PascalABC.NET
Формулировка задачи:
Есть проблема с выводом ответа, почему то не выводит слова начинающиеся с согласных, объясните пожалуйста, что я делаю не так ?
Решение задачи: «Не выводятся слова, начинающиеся с согласных»
textual
Листинг программы
var
vowel: string := 'aeiouy';
consonant: string := 'bcdfghjklmnpqrstvwxz';
st: string;
Begin
// st := ReadString('Введите строку: ');
st := 'baba asaaa tetete ususus uuuus';
var res := st.Split(' '.ToCharArray()).Where((s : string) ->
(s.ToArray().Where((ch, i) -> odd(i)).All(it -> vowel.Contains(it)) and
s.ToArray().Where((ch, i) -> not odd(i)).All(it -> consonant.Contains(it)))
or
(s.ToArray().Where((ch, i) -> not odd(i)).All(it -> vowel.Contains(it)) and
s.ToArray().Where((ch, i) -> odd(i)).All(it -> consonant.Contains(it)))
);
writeln(res);
End.
Объяснение кода листинга программы
В данном коде задача заключается в том, чтобы вывести из строки все слова, начинающиеся с букв, которые являются гласными или согласными. Список действий, выполняемых в коде:
- Инициализируются две строки: vowel и consonant. В первой содержатся гласные буквы, во второй - согласные.
- Задается входная строка st, которая представляет собой строку, введенную пользователем.
- Строка st разбивается на слова, используя пробел как разделитель. Полученный список слов сохраняется в переменной res.
- К каждому слову из списка применяются два условия:
- Для каждого четного индекса (то есть для каждой буквы, которая является гласной) проверяется, содержит ли текущее слово хотя бы одну гласную букву из строки vowel. Если условие выполняется, слово добавляется в список res.
- Для каждого нечетного индекса (то есть для каждой буквы, которая является согласной) проверяется, содержит ли текущее слово хотя бы одну согласную букву из строки consonant. Если условие выполняется, слово добавляется в список res.
- Выводится список слов, удовлетворяющих условиям, на экран.
Пример вывода для строки
baba asaaa tetete ususus uuuus:baba asaaa tetete