Сортировка массива - Free Pascal (584)

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

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

Прошу помощи в решении задачи: Дан массив {X} размерностью n. Нужно: Превратить его так, чтобы в начале массива находились положительные элементы в порядке их прохождения в исходном массиве, а после них отрицательные элементы также в порядке их прохождения в исходном массиве, если произведение минимального элемента и его номера меньше числа L. В противном случае: превратить его так, чтобы в начале массива находились положительные элементы в порядке их прохождения в исходном массиве. Ограничения: создание вспомогательного массива не разрешается Я только учусь, так что прошу не писать о том, что, мол, это совсем легко и стыдно такого не знать. Прошу вашей помощи. Заранее спасибо.

Решение задачи: «Сортировка массива»

textual
Листинг программы
  1. type FCompare=function(a, b: Integer): Boolean;
  2. procedure sort(var a: array of Integer; less: FCompare);
  3. var
  4.   i, j, t: Integer; Done: Boolean;
  5. begin
  6.   for i:=High(a) downto Low(a)+1 do begin
  7.     Done:=True;
  8.     for j:=Low(a)+1 to i do
  9.       if less(a[j],a[j-1]) then begin
  10.         t:=a[j-1]; a[j-1]:=a[j]; a[j]:=t; Done:=False;
  11.       end;
  12.     if Done then Break;
  13.   end;
  14. end;
  15. {$F+}
  16. function less1(a, b: Integer): Boolean; begin less1:=(a>0) and (b<=0) or (b=0); end;
  17. function less2(a, b: Integer): Boolean; begin less2:=(a>0) and (b<=0); end;
  18. const n=10;
  19. var
  20.   a: array [1..n] of Integer;
  21.   i, l, m: Integer;
  22.   Done: Boolean;
  23. begin
  24.   Randomize;
  25.   for i:=1 to n do a[i]:=-50+Random(101); a[5]:=0;
  26.   Write('A ='); for i:=1 to n do Write(' ',a[i]); WriteLn;
  27.   Write('Введите L: '); ReadLn(l);
  28.   m:=1; for i:=2 to n do if a[m]>a[i] then m:=i;
  29.   if a[m]*m<l then sort(a,less1) else sort(a,less2);
  30.   Write('A ='); for i:=1 to n do Write(' ',a[i]); WriteLn;
  31. end.

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

В этом коде реализована сортировка массива методом сортировки пузырьком.

  1. Тип FCompare определяет функцию сравнения двух целых чисел.
  2. В процедуре sort() происходит сортировка массива a по возрастанию с использованием функции сравнения less.
  3. Функция less1() сравнивает два целых числа и возвращает True, если первое число положительно и второе число меньше или равно нулю, или если второе число равно нулю.
  4. Функция less2() сравнивает два целых числа и возвращает True, если первое число положительно и второе число меньше или равно нулю.
  5. В начале основной части программы генерируется случайный массив a, выводится на экран, затем вводится число L, которое будет использоваться для проверки, и выбирается опорный элемент массива (в данном случае - элемент с индексом 5).
  6. Если сумма квадратов опорного элемента и элемента, на который указывает введенное число L, больше, чем значение L, то вызывается функция sort() с функцией сравнения less1().
  7. Если меньше - то вызывается функция sort() с функцией сравнения less2().
  8. После сортировки массив выводится на экран.

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


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

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

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы