Найти и вывести слово нечетной длины, в котором согласных букв больше - Pascal
Формулировка задачи:
Дан произвольный текст на русском языке. найти и вывести слово нечетной длины ,в котором согласных букв больше,чем гласных
Решение задачи: «Найти и вывести слово нечетной длины, в котором согласных букв больше»
textual
Листинг программы
const
ar: set of char = ['А'..'Я', 'а'..'я']; //задаю множество букв русского алфавита
//задаю множество гласных букв русского алфавита
gr: set of char = ['А', 'Ё', 'У', 'Е', 'Ы', 'О', 'Э', 'Я', 'И', 'Ю', 'а', 'ё', 'у', 'е', 'ы', 'о', 'э', '?', 'и', 'ю'];
p: set of char = [' ', '.', ',', ':', ';', '!', '?', '-'];//задаю множество разделителей слов
var
sr: set of char; //переменные для множеств согласных
i, j, kg, ks: byte; //счетчики и переменные для количества гласных и согласных в слове
s, slovo: string;//переменная для строки и для слова
begin
write('s='); //запрашиваю и считываю строку
readln(s);
s := s + ' ';
slovo := ''; //добавляю пробел в конце предложения
sr := ar - gr;
for i := 1 to length(s) do
if not (s[i] in p) then slovo := slovo + s[i] else //если символ - не знк препинания или пробел, добавляю его к "нововобразовываемому" слову. иначе перехожу к обработке
if length(slovo) > 0 then //если длина набранного слова больше 0
begin
kg := 0;ks := 0; //изначально количество гласных и количество согласных рано 0
for j := 1 to length(slovo) do //в цикле с параметром перебираю символы слова
begin
if slovo[j] in sr then
inc(ks); //если символ входит в множество согласных, увеличиваю счетчик согласных букв
if slovo[j] in gr then
inc(kg); //если символ входит в множество гласных, увеличиваю счетчик гласных букв
end;
if (kg > ks) and (length(slovo) div 2 <> 0) then
write(slovo, ' '); //если счетчик гласных больше согласных, вывожу слово
slovo := ''; //очищаю переменную для следующего слова
end;
end.
Объяснение кода листинга программы
- Объявляется множество
arдля русских букв алфавита. - Объявляется множество
grдля русских гласных букв. - Объявляется множество
pдля разделителей слов. - Объявляется переменная
srдля множества согласных букв. - Объявляются переменные и счетчики:
i,j,kg,ksдля работы с буквами в слове. - Объявляются переменные строкового типа:
sдля ввода строки иslovoдля текущего слова. - Запрашивается и считывается строка.
- К строке добавляется пробел в конце предложения.
- Определяется множество
srкак разность множестваarс множествомgr. - В цикле for перебираются символы строки: если символ не является разделителем, он добавляется к временному слову
slovo, иначе обрабатывается. - Если длина слова больше нуля, инициализируются счетчики гласных и согласных букв.
- Во внутреннем цикле for перебираются буквы слова: если символ является согласной буквой, увеличивается счетчик согласных; если символ является гласной буквой, увеличивается счетчик гласных.
- Если количество гласных больше согласных и длина слова нечетная, выводится слово.
- Переменная для слова
slovoочищается для обработки следующего слова. Код написан на языке программирования Pascal.