Сортировка массива: сначала положительные числа по убыванию, потом отрицательные по возрастанию, потом нули - 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.
Объяснение кода листинга программы
В данном коде:
- Объявлен класс
MySort
, который реализует интерфейсIComparer<integer>
. - В классе
MySort
переопределена функцияCompare
, которая реализует алгоритм сортировки массива. - В основной части программы вызывается функция
ArrRandom
для генерации случайного массива. - Пользователю предлагается ввести размер массива с помощью функции
ReadLnInteger
. - Выводится на экран исходный массив
a
. - Отсортированный массив выводится с помощью метода
OrderBy
, где в качестве аргумента передается лямбда-выражениеv -> v
, которое означает, что элементы массива сравниваются сами с собой, и конструкторMySort
, который создает экземпляр классаMySort
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д