Отсортировать положительные элементы массива, стоящие на четных местах по убыванию методом простого выбора - Pascal ABC

Узнай цену своей работы

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

Отсортировать положительные элементы массива, стоящие на четных местах по убыванию методом простого выбора.
Программа работает, но отсортированный массив имеет вид 0 4 2 0 0, вместо 4 2 0 0 0
Не срабатывает оно скорее всего потому что я коряво задал цикл
тк он изначально был для сортировки по возврастанию

Решение задачи: «Отсортировать положительные элементы массива, стоящие на четных местах по убыванию методом простого выбора»

textual
Листинг программы
const
  n = 5;//константа
 
type//описание массива
  omas = array[1..100] of integer;//описание массива
 
procedure init(var a: omas);//Название процедуры  и Описание формальных параметров переменных
var//Описание локальных переменных
  i: integer;//Описание локальных переменных
begin//начало процедуры
  a[1] := 5;//присваиваине значения
  a[2] := 2;//присваиваине значения
  a[3] := 8;//присваиваине значения
  a[4] := 4;//присваиваине значения
  a[5] := 9;//присваиваине значения
end;//конец процедуры
 
procedure print(var a: omas; n: integer);//Название процедуры  и Описание формальных параметров переменных
var//Описание локальных переменных
  i: integer;//Описание локальных переменных
begin//начало процедуры
  for i := 1 to n do//Цикл
    write(a[i], ' ');//вывод
end;//конец процедуры
 
procedure sort(var a, b: omas; var nt: integer);//процедура sort с описанием формальных параметров- переменных a типа myarray
var
  k, i, j, m: integer;//описание локальных переменных
begin//начало процедуры
  for i := 1 To n Do //цикл с параметром
    if (i mod 2) = 0 Then //условие
      if a[i] > 0 Then//условие
        b[i] := a[i];//присваиваине значения
 
  for i := 1 To n Do
    if b[i] <> 0 then//условие
      inc(nt);
  for i := n Downto 1 Do   {цикл по длине рассматриваемой части массива}
  begin{поиск максимального элемента и его номера в текущей части массива}
    k := i; m := b[i]; {начальные значения минимального, элемента и его индекса }
    for j := 1 To i-1  Do
      if b[j] < m Then
      begin
        k := j; m := b[k]
      end;
    if k <> i Then
    begin{перестановка элементов}
      b[k] := b[i];
      b[i] := m
    end;
  end;
end;//конец процедуры
 
var
  a, b: omas;//описание глобальных переменных
  nt: integer;
 
begin//начало программы
  init(a);//Вызов процедуры и указание фактических параметров
  writeln('исходный массив');//Вывод текста
  print(a, n);//Вызов процедуры и указание фактических параметров
  writeln;//переход на следующую строку
  sort(a, b, nt);//Вызов процедуры и указание фактических параметров
  writeln('отсортированый массив:');//Вывод текста
  print(b, nt);//Вызов процедуры и указание фактических параметров
end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы