Отсортировать массив по убыванию - PascalABC.NET

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

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

Помогите плз) нужно поставить элементы с 1 и 3 столбца массива как до сортировки. то есть, к примеру, после сортировки стало: 227|0,000987|227|0,000987 а должно быть 192|0,000987|197|0,000987
Листинг программы
  1. var a:array[1..64,1..4] of real;
  2. i,j,k,g,v:integer;
  3. c:real;
  4. f1,f3: text;
  5. begin
  6. assign(f1,'3.txt');
  7. assign(f3,'5.txt');
  8. k:=192;
  9. for i:=1 to 64 do begin
  10. a[i,1]:=k;
  11. inc(k);
  12. end;
  13. reset(f1);
  14. for i:=1 to 64 do begin//Частоты букв исходного текста
  15. readln(f1,a[i,2]);
  16. end;
  17. g:=192;
  18. for i:=1 to 64 do begin
  19. a[i,3]:=g;
  20. inc(g);
  21. end;
  22. reset(f3);
  23. for i:=1 to 64 do begin//Частоты букв зашифрованного текста
  24. readln(f3,a[i,4]);
  25. end;
  26. close(f1);
  27. close(f3);
  28. for j:=2 to 2 do
  29. for i:=1 to 64 do
  30. for v:=2 to 64 do
  31. if a[v,j] >a[v-1,j]then begin
  32. c:=a[v,j];
  33. a[v,j]:=a[v-1,j];
  34. a[v-1,j]:=c;
  35. end;
  36. for j:=4 to 4 do
  37. for i:=1 to 64 do
  38. for v:=2 to 64 do
  39. if a[v,j] >a[v-1,j]then begin
  40. c:=a[v,j];
  41. a[v,j]:=a[v-1,j];
  42. a[v-1,j]:=c;
  43. end;
  44. for i:=1 to 64 do begin
  45. for j:=1 to 4 do
  46. write(a[i,j]:7:6,'|');
  47. writeln;
  48. end;
  49. end.

Решение задачи: «Отсортировать массив по убыванию»

textual
Листинг программы
  1. begin
  2.   Randomize;
  3.   var a : array [1..64, 1..4] of Real;
  4.   for var i := 1 to 64 do
  5.     begin a[i, 1] := i; a[i, 2] := Random; a[i, 3] := i; a[i, 4] := Random; end;
  6.    
  7.   var Col := 2; // Сортировка по второму столбцу
  8.   var Row := 1;
  9.   while Row < 64 do
  10.     if a[Row, Col] < a[Row+1, Col] then
  11.       begin
  12.         Swap(a[Row, Col-1], a[Row+1, Col-1]);
  13.         Swap(a[Row, Col  ], a[Row+1, Col  ]);
  14.         if Row > 1 then Row -= 1;
  15.       end
  16.     else
  17.       Row += 1;
  18.  
  19.   Col := 4; // Сортировка по четвёртому столбцу
  20.   Row := 1;
  21.   while Row < 64 do
  22.     if a[Row, Col] < a[Row+1, Col] then
  23.       begin
  24.         Swap(a[Row, Col-1], a[Row+1, Col-1]);
  25.         Swap(a[Row, Col  ], a[Row+1, Col  ]);
  26.         if Row > 1 then Row -= 1;
  27.       end
  28.     else
  29.       Row += 1;
  30.  
  31.   for var i := 1 to 64 do
  32.     WriteLn(a[i,1]:2, ' - ', a[i,2]:6:4, '    ', a[i,3]:2, ' - ', a[i,4]:6:4);
  33. end.

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

В данном коде представлен алгоритм сортировки массива по убыванию двух отдельных массивов, используя два различных столбца.

  1. Создается массив типа Real размером 64x4, заполняемый случайными значениями от 0 до 63 для каждого элемента.
  2. Два вложенных цикла проверяют, что текущий элемент меньше следующего в выбранном столбце. Если это так, то элементы меняются местами.
  3. Если текущий элемент больше следующего, то происходит переход к следующему элементу внешнего цикла.
  4. После завершения первого вложенного цикла, происходит переход ко второму вложенному циклу, который сортирует массив по второму столбцу.
  5. После завершения второго вложенного цикла, происходит вывод отсортированного массива. Список действий:
  6. Создание массива
  7. Заполнение массива
  8. Первый цикл сортировки
  9. Второй цикл сортировки
  10. Вывод отсортированного массива

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


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

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

14   голосов , оценка 4.071 из 5

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

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

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