Не выводятся слова, начинающиеся с согласных - PascalABC.NET
Формулировка задачи:
Есть проблема с выводом ответа, почему то не выводит слова начинающиеся с согласных, объясните пожалуйста, что я делаю не так ?
Листинг программы
- program PROG5_23;
- var s,s1:string;
- const gl=['a','e','i','o','u','y'];
- sog=['b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','z'];
- var
- b:boolean;
- i:byte;
- Begin
- write('Введите строку: ');readln(s);
- s:=s+' ';
- While Pos(' ',s)<>0 do
- Begin
- s1:=Copy(s,1,Pos(' ',s)-1);
- Delete(s,1,Pos(' ',s));
- i:=0;b:=true;
- While (i<Length(s1))and(b) do
- Begin
- inc(i,2);
- if (i<=Length(s1))and(not ((s1[i-1] in gl)and(s1[i] in sog))) then b:=false;
- End;
- if b then writeln(s1,' ');
- End;
- readln;
- End.
Решение задачи: «Не выводятся слова, начинающиеся с согласных»
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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д