Дана матрица целых чисел размером 5х6. переставить столбцы так,чтобы сумма их элементов убывала
123
263
Ответы на вопрос:
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 : = s end; procedure swp(var a, b: r); { меняет местами элементы a и b } var t: r; begin t : = a; a : = b; b : = t end; 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 end end; 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 end end. тестовое решение: *** исходные элементы массива *** -27 13 13 -15 8 27 28 -1 32 44 36 20 -39 45 -46 29 18 36 -14 -36 -5 35 36 -14 24 31 -19 -42 -34 -44 40 50 -21 -17 -30 37 -38 22 -46 9 -14 42 -10 1 30 41 -41 -21 21 39 -45 18 4 -3 *** результирующие элементы массива *** 8 32 28 -15 -1 -27 13 27 13 45 36 29 -39 18 44 36 -46 20 36 -19 24 35 31 -14 -36 -14 -5 50 37 -17 40 -30 -42 -34 -21 -44 -14 30 -10 9 1 -38 22 42 -46 39 -3 18 21 4 41 -41 -45 -21
1) 1
2) 2
3) 4
4) 4
5) килобайт - 1024
мегабайт - 1048576
гигабайт - 1073741824
терабайт - 1099511627776
Популярно: Информатика
-
lesyastruklol12.12.2020 19:37
-
Лаймик002.10.2022 09:27
-
Бегемот50511.12.2021 20:12
-
catBoss00920.06.2021 00:45
-
АНТО1412.09.2022 12:37
-
domiradps09.07.2022 13:10
-
ksusha29024.03.2022 13:55
-
dfasha108440211.04.2021 02:45
-
lalka13711.05.2021 23:11
-
tekeevalb08.03.2020 17:22