Не выводятся слова, начинающиеся с согласных - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Есть проблема с выводом ответа, почему то не выводит слова начинающиеся с согласных, объясните пожалуйста, что я делаю не так ?
Листинг программы
  1. program PROG5_23;
  2. var s,s1:string;
  3. const gl=['a','e','i','o','u','y'];
  4. sog=['b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','z'];
  5. var
  6. b:boolean;
  7. i:byte;
  8. Begin
  9. write('Введите строку: ');readln(s);
  10. s:=s+' ';
  11. While Pos(' ',s)<>0 do
  12. Begin
  13. s1:=Copy(s,1,Pos(' ',s)-1);
  14. Delete(s,1,Pos(' ',s));
  15. i:=0;b:=true;
  16. While (i<Length(s1))and(b) do
  17. Begin
  18. inc(i,2);
  19. if (i<=Length(s1))and(not ((s1[i-1] in gl)and(s1[i] in sog))) then b:=false;
  20. End;
  21. if b then writeln(s1,' ');
  22. End;
  23. readln;
  24. End.

Решение задачи: «Не выводятся слова, начинающиеся с согласных»

textual
Листинг программы
  1. var
  2.   vowel: string := 'aeiouy';
  3.   consonant: string := 'bcdfghjklmnpqrstvwxz';
  4.   st: string;
  5.  
  6. Begin
  7.     // st := ReadString('Введите строку: ');
  8.     st := 'baba asaaa tetete ususus uuuus';
  9.     var res := st.Split('  '.ToCharArray()).Where((s : string) ->
  10.       (s.ToArray().Where((ch, i) -> odd(i)).All(it -> vowel.Contains(it)) and
  11.        s.ToArray().Where((ch, i) -> not odd(i)).All(it -> consonant.Contains(it)))
  12.       or
  13.       (s.ToArray().Where((ch, i) -> not odd(i)).All(it -> vowel.Contains(it)) and
  14.        s.ToArray().Where((ch, i) -> odd(i)).All(it -> consonant.Contains(it)))
  15.     );
  16.     writeln(res);
  17. End.

Объяснение кода листинга программы

В данном коде задача заключается в том, чтобы вывести из строки все слова, начинающиеся с букв, которые являются гласными или согласными. Список действий, выполняемых в коде:

  1. Инициализируются две строки: vowel и consonant. В первой содержатся гласные буквы, во второй - согласные.
  2. Задается входная строка st, которая представляет собой строку, введенную пользователем.
  3. Строка st разбивается на слова, используя пробел как разделитель. Полученный список слов сохраняется в переменной res.
  4. К каждому слову из списка применяются два условия:
    • Для каждого четного индекса (то есть для каждой буквы, которая является гласной) проверяется, содержит ли текущее слово хотя бы одну гласную букву из строки vowel. Если условие выполняется, слово добавляется в список res.
    • Для каждого нечетного индекса (то есть для каждой буквы, которая является согласной) проверяется, содержит ли текущее слово хотя бы одну согласную букву из строки consonant. Если условие выполняется, слово добавляется в список res.
  5. Выводится список слов, удовлетворяющих условиям, на экран. Пример вывода для строки baba asaaa tetete ususus uuuus: baba asaaa tetete

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы