Дано предложение, выписать из нечётных слов все гласные буквы и
расположить по алфавиту.
В задаче сперва идёт цикл 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.
Скачать решение.