Сортування лінійного масиву в Lazarus

Термін здачі піджимає, а я туплю дуже:(((

Програма виглядає так:

в Edit1 пишу кількість чисел, які будуть виведені в масив (ListBox1).

Потрібно зробити так, щоб при натисканні на кнопку в другий лістбокс виводилося таке сортування масиву:

перша половина сортується за зростанням чисел, а друга половина — за спаданням.

Буду дуже вдячний за допомогу

Ось частина мого коду (кнопка "Заповнити масив А):

procedure TForm1.Button1Click(Sender: TObject);
var
 i, count: Integer;
begin
 // Отримання кількості чисел з Edit1
count := StrToIntDef(Edit1.Text, 0);
 // Перевірка на допустимість кількості чисел
 if (count > 0) and (count <= 100) then
 begin
  // Заповнення масиву A обмеженою кількістю чисел
   for i := 0 to count - 1 do
 begin
  if i mod 2 = 0 then
     A[i] := Random(101) // додатні числа для парних позицій
   else
    A[i] := -Random(101); // від'ємні числа для непарних позицій
 end;
   // Виведення обмеженого масиву A у ListBox1
   ListBox1.Clear;
  for i := 0 to count - 1 do
ListBox1.Items.Add(IntToStr(A[i]));
end
 else
ShowMessage('Введіть коректне значення кількості (від 1 до 100).');
end;
👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

TArray.Sort просто використай, туди передай функцію яка зрівнює значення коли left hand statement меньше right state statement а потім навпаки більше отримаєш сортування по зростанню та по зниженню. Прикладів повний інтернет англійською мовою.

перша половина сортується за зростанням чисел, а друга половина — за спаданням.

1. Сортируем весь массив по возрастанию
www.freepascal.org/...​l/classes/tlist.sort.html
2. Разрезаем массив на две части по среднему
3. вторую часть переворачиваем
4. склеиваем массивы.

Да можно сделать на основе одного массива, но так будет визуально понятнее.

Підписатись на коментарі