• Дана матрица целых чисел размером 5х6. переставить столбцы так,чтобы сумма их элементов убывала

Ответы 1

  • Const m = 6; n = 9;type R = record sum: integer; nom: integer end; vR = array[1..n] of R; tm = array[1..m, 1..n] of integer;function SumCol(a: tm; k: integer): integer;{ Сумма элементов в k-м столбце (колонке) матрицы а }var i, s: integer;begin s := 0; for i := 1 to m do s := s + a[i, k]; SumCol := send;procedure Swp(var a, b: R);{ Меняет местами элементы a и b }var t: R;begin t := a; a := b; b := tend;procedure Shell(var a: vR);{ сортировка методом Шелла по убыванию }var i, j, step: integer;begin step := n div 2; while step > 0 do begin for j := n - step downto 1 do begin i := j; while i <= n - step do begin if a[i].sum < a[i + step].sum then Swp(a[i], a[i + step]); i := i + step end end; step := step div 2 endend;var a, c: tm; b: vR; i, j: integer;begin Randomize; Writeln(\'*** Исходные элементы массива ***\'); for i := 1 to m do begin for j := 1 to n do begin a[i, j] := Random(101) - 50; Write(a[i, j]:4) end; Writeln end; { формируем вектор сумм по столбцам } for j := 1 to n do begin b[j].sum := SumCol(a, j); b[j].nom := j; end; { сортируем полученный вектор по убыванию сумм } Shell(b); { осуществляем перестановку во вспомогательный массив с} for j := 1 to n do for i := 1 to m do c[i, j] := a[i, b[j].nom]; { копируем содержимое вспомогательного массива с в массив а } Writeln(\'*** Результирующие элементы массива ***\'); for i := 1 to m do begin for j := 1 to n do begin a[i, j] := c[i, j]; Write(a[i, j]:4) end; Writeln endend.
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years