Сортировка массива: сначала положительные числа по убыванию, потом отрицательные по возрастанию, потом нули - PascalABC.NET

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

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

Заполнить массив рандомными числами от -100 включительно до 100 включительно. Отсортировать так: сначала идут положительные числа по убыванию, потом отрицательные по возрастанию, потом нули, если есть. Пример: Было: 20 -90 15 -34 10 0 Стало: 20 15 10 -90 -34 0

Решение задачи: «Сортировка массива: сначала положительные числа по убыванию, потом отрицательные по возрастанию, потом нули»

textual
Листинг программы
type MySort = class(IComparer<integer>)
public
  function Compare(a, b : integer) : integer := (a * b < 0 ? b - a : abs(b) - abs(a));
end;
begin
  var a := ArrRandom(ReadLnInteger('n ='), -100, +100);
  WriteLn('Массив a:', NewLine, a, NewLine, 'Отсортированный массив:', NewLine, a.OrderBy(v -> v, new MySort));
end.

Объяснение кода листинга программы

В данном коде:

  1. Объявлен класс MySort, который реализует интерфейс IComparer<integer>.
  2. В классе MySort переопределена функция Compare, которая реализует алгоритм сортировки массива.
  3. В основной части программы вызывается функция ArrRandom для генерации случайного массива.
  4. Пользователю предлагается ввести размер массива с помощью функции ReadLnInteger.
  5. Выводится на экран исходный массив a.
  6. Отсортированный массив выводится с помощью метода OrderBy, где в качестве аргумента передается лямбда-выражение v -> v, которое означает, что элементы массива сравниваются сами с собой, и конструктор MySort, который создает экземпляр класса MySort.

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


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

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

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