Паскаль я не разбираюсь в этом языке
Создать массив из 16 элементов. Заполнить его целыми случайными числами в интервале от 1 до 11. Найти в нем количество чётных элементов. Отсортировать массив по убыванию. Заменить все чётные элементы на их количество. Вывести массив в строку с комментариями.
begin
var N: array of integer;
SetLength(N,16);
N.FillRandom(1,11);
var Q:=N.FindAll(x -> x mod 2 = 0).Length;
writeln('Количество четных элементов:',Q);
N.Sort; Reverse(N);
for var l:=N.Low to N.High do N[l]:=(N[l] mod 2 = 0)? Q:N[l];
writeln('Полученный массив: ',N);
end.
Объяснение:
var N: array of integer; Вводим наш массив с числами
SetLength(N,16); Устанавливаем его длину, 0 - первый элемент, 15 - последний, итого 16 ячеек
N.FillRandom(1,11); Заполняем массив случайным образом числами от 1 до 11
var Q:=N.FindAll(x -> x mod 2 = 0).Length; Находим количество четных элементов. x mod 2 остаток от деления каждого элемента на 2
{Процедура FindAll заносит все значения, по условию в отдельный массив, через .Length смотрим его длину}
writeln('Количество четных элементов:',Q);
N.Sort; Reverse(N); N.Sort - сортирует массив по возрастанию, а reverse() меняет последовательность на противоположную, соответственно, теперь он отсортирован по убыванию
for var l:=N.Low to N.High do N[l]:=(N[l] mod 2 = 0)? Q:N[l]; От начала массива и до его конца, над каждым элементом смотрим - четный он или нет, если четный - заменяем на Q (число элементов)
writeln('Полученный массив: ',N);