Дано предложение, выписать из нечётных слов все гласные буквы и расположить по алфавиту.

В задаче сперва идёт цикл repeat until, в нём выделяются все слова из предложения и записываются по отдельности в массиве слов, последняя выборка нужна если введено одно слово или осталось одно слово. Далее из каждого нечётного слова формируем массив гласных букв. Оператор mod делит i на 2 и если остаток от деления = 0 то i четное. (это проверка числа на чётность), нам нужны только нечётные слова. А далее обычная сортировка массива с гласными буквами по возрастанию (по алфавиту).

program zadacha_8;
const gl = ['а', 'е', 'ё', 'и', 'о', 'у', 'ы', 'ю', 'я','э'];
var
s : string; {заданное предложение}
s1: array[1..100] of string; {массив слов}
s2: array[1..100] of char; {массив гласных букв}
ch: char; {буфер при сртировке}
i, j, k, n : integer; {счётчики}

begin
writeln('Введите слова.');
readln(s);
{формируем массив слов}
j := 1;
repeat
s1[j] := copy(s, 1, pos(' ', s) - 1);
delete(s, 1, pos(' ', s));
if length(s) <> 0 then {последняя выборка}
if pos(' ', s) = 0
then
begin
s1[j] := s;
s := '';
end;
j := j + 1;
until length(s) = 0;
{формируем массив гласных букв из нечетных слов}
k := 0;
for i:= 1 to j do
if i mod 2 <> 0 then
begin
for n := 1 to length(s1[i]) do
if s1[i][n] in gl then
begin
k := k + 1;
s2[k] := s1[i][n];
end;
end;
{сортируем массив по возрастанию т. е. по возрастанию}
repeat
n := 0;
for i := 1 to k -1 do
if s2[i] > s2[i+1] then
begin
ch := s2[i];
s2[i] := s2[i+1];
s2[i+1] := ch;
n := 1;
end;
until n = 0;

{выводим результат}
for i := 1 to k do
write(s2[i], ' ');
readln;
end.



Скачать решение.

Hosted by uCoz