Переставить столбцы матрицы в соответствии с ростом заданной характеристики - Turbo Pascal

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

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

Помогите дописать в задаче сортировку пузырьком и если можно с пояснением как она будет применяться. Условие задачи: Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. Переставляя столбцы матрицы, расположить их в соответствии с ростом характеристик. Вот какой кусок кода получился у меня (Программу я стал писать через процедуры и функции), что бы легче было понять мою идею, я оставлю сбоку к элементам когда свои комментарии:
Листинг программы
  1. Program BubbleSort;
  2. const n=5; // Задал параметры матрицы. Варьируя их меняем размеры матрицы.
  3. m=5;
  4. type Matr=array[1..n,1..m] of integer; // Новые типы: матрица,вектор-строка.
  5. Vector=array[1..m] of integer;
  6. Var A:Matr;
  7. B:Vector;
  8. i:integer;
  9. Procedure Form_Matr(var C:Matr); // Создаю матрицу со значениями.
  10. var k,l:integer;
  11. begin
  12. for k:= 1 to n do
  13. for l:= 1 to n do
  14. C[k,l]:=random(-15;20);
  15. end;
  16. Procedure Print_Matr(C:Matr); // Печать матрицы
  17. var k,l:integer;
  18. begin
  19. for k:=1 to n do
  20. begin
  21. for l:=1 to m do
  22. Write (C[k,l]:4);
  23. Writeln;
  24. end;
  25. end;
  26. Function F(var C:Matr;l:integer):integer; // Характеристика
  27. var S,k:integer;
  28. begin
  29. s:=0;
  30. For k:=1 to n do
  31. begin
  32. if C[k,l]<0 and (C[k,l] mod 2<>0) then // Условие характеристики
  33. S:=S+abs(C[k,l]);
  34. end;
  35. F:=S;
  36. end;
  37. procedure BubbleSort(var C : Matr;var O : Vector); // Сама сортировка пузырьком
  38. var p,k,l,j:integer;
  39. begin
  40. //[Тут нужно дописать сортировку пузырьком]//
  41. Begin
  42. Form_Matr(A); // создаем матрицу
  43. Print_Matr(A); // выводим матрицу на экран
  44. For i := 1 to m do
  45. B[i] := F(A,i);
  46. Writeln;
  47. BubbleSort(A,B); // сортировка матрицы А
  48. Print_Matr(A); // вывод отсортированной матрицы
  49. End.
Не могу написать сортировку, как я понял там нужно сделать по строчную проверку элементов в столбце, если находится элемент условия, то его добавляем в счетчик, потом суммируем элементы, которые удовлетворяют условию и меняем столбцы смотря на эти характеристики. Кто сможет помочь, тому большое спасибо!

Решение задачи: «Переставить столбцы матрицы в соответствии с ростом заданной характеристики»

textual
Листинг программы
  1. procedure BubbleSort(var c: Matr; var v: Vector);
  2. var i, j, k, p, t: Integer;
  3. begin
  4.   p:=High(v);
  5.   repeat
  6.     i:=p; p:=Low(v);
  7.     for j:=Low(v) to i-1 do
  8.       if v[j+1]<v[j] then begin
  9.         p:=j; t:=v[j]; v[j]:=v[j+1]; v[j+1]:=t;
  10.         for k:=High(c) downto Low(c) do begin
  11.           t:=c[k,j]; c[k,j]:=c[k,j+1]; c[k,j+1]:=t;
  12.         end;
  13.       end;
  14.   until p=Low(v);
  15. end;

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

Данный код представляет собой реализацию алгоритма сортировки пузырьком для матрицы и вектора. В начале кода определяется переменная p, которая будет использоваться для отслеживания последнего элемента в векторе. Затем в цикле повторяется следующая последовательность действий:

  1. Переменная i устанавливается равной значению переменной p. Переменная p сбрасывается до значения первого элемента вектора.
  2. Цикл for проходит по всем элементам вектора от Low(v) до i-1. Если текущий элемент в векторе меньше следующего, то происходит перестановка элементов.
  3. Значение переменной p устанавливается равным индексу текущего элемента в векторе. Значение текущего элемента считывается и сохраняется в переменной t. Затем значение текущего элемента в векторе меняется местами с предыдущим элементом.
  4. Для каждого элемента в матрице, начиная с верхнего левого угла и двигаясь вниз и влево, происходит перестановка элементов, если текущий элемент в векторе меньше следующего.
  5. После завершения цикла for переменная p сбрасывается до значения первого элемента вектора.
  6. Цикл повторяется до тех пор, пока значение переменной p не станет равным значению первого элемента вектора. Таким образом, данный код реализует алгоритм сортировки пузырьком для матрицы и вектора.

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


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

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

15   голосов , оценка 4.2 из 5

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

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

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