Отсортировать массив, найти его элементы, являющиеся квадратами четных чисел (и их количество) - PascalABC.NET

Формулировка задачи:

Даны натуральные числа n, a1......an где n<=3000. Отсортировать последовательность a1.....an в порядке возрастания, найти элементы ak последовательности, являющимся квадратами четных чисел, и определить их количество. Помогите пожалуйста Сортировать надо методом пузырька.Добавлено через 2 часа 51 минутуДопишите пожалуйста
var
A:array[1..3000] of integer;
N,i,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(',')
else write (',');
end;
 
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;
 
writeln('Порядок возрастания');
for i:=1 to n do begin
write(A[i]);
if i<n then write (',')
else write(',');
end;
End.

Код к задаче: «Отсортировать массив, найти его элементы, являющиеся квадратами четных чисел (и их количество) - PascalABC.NET»

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.

15   голосов, оценка 3.933 из 5


СОХРАНИТЬ ССЫЛКУ