Отсортировать массив, найти его элементы, являющиеся квадратами четных чисел (и их количество) - PascalABC.NET
Формулировка задачи:
Даны натуральные числа n, a1......an где n<=3000. Отсортировать последовательность a1.....an в порядке возрастания, найти элементы ak последовательности, являющимся квадратами четных чисел, и определить их количество.
Помогите пожалуйста
Сортировать надо методом пузырька.
Допишите пожалуйста
Решение задачи: «Отсортировать массив, найти его элементы, являющиеся квадратами четных чисел (и их количество)»
textual
Листинг программы
var
A: array[1..3000] of integer;
N, i, j, k, tmp: integer;
begin
repeat
write('N=');
readln(n);
if (n <= 0) or (n > 3000) then writeln('Исходные данные неверны');
until(n > 0) and (n <= 3000);
write('Исходный массив:');
for i := 1 to n do
begin
A[i] := random(100);
write(A[i]);
if i < n then write(',');
end;
writeln;
for i := 2 to n do
for j := n downto i do
if A[j] < A[j - 1] then
begin
tmp := A[j - 1];
A[j - 1] := A[j];
A[j] := tmp;
end;
k := 0;
write('Порядок возрастания: ');
for i := 1 to n do
begin
write(A[i]);
if (A[i] <> 0) and (frac(sqrt(A[i]) / 2) = 0) or (A[i] = 1) then inc(k);
if i < n then write(',');
end;
writeln;
Writeln('Колличество квадратов четных чисел = ', k);
end.
Объяснение кода листинга программы
- Ввод числа N от 1 до 3000
- Инициализация массива A[1..3000] случайными целыми числами от 0 до 99
- Вывод исходного массива A на экран
- Сортировка массива A методом пузырька
- Проход по отсортированному массиву A и подсчет количества квадратов четных чисел (с помощью переменной k)
- Вывод отсортированного массива A на экран
- Вывод количества квадратов четных чисел на экран