Дана матрица целых чисел размером 5х6. переставить столбцы так,чтоб сумма их
Дана матрица целых чисел размером 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 := 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 gt; 0 do
begin
for j := n - step downto 1 do
begin
i := j;
while i lt;= n - step do
begin
if a[i].sum lt; 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.
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 gt; 0 do
begin
for j := n - step downto 1 do
begin
i := j;
while i lt;= n - step do
begin
if a[i].sum lt; 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.
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Анна хорошо учится у неё много подруг свободное от учёбы время
Обществознание.
10) Килограмм конфет дороже килограмма печенья на 52 р. За 8
Математика.
Во сколько раз число атомов кислорода в земной коре больше числа
Химия.
Составить монолог от имени дневника двоечника 7-10 предложений
Русский язык.
Рассматривая литературный язык как сложное взаимодействие книжного языка и разговорного,В.И.Чернышёв горячо
Разные вопросы.
Арабы входят в __________________ групп народов. Местом расселения арабов с незапамятных
Разные вопросы.
Грузовой автомобиль марки краз за одну поездку может доставить 7.500 кирпичей
Математика.
Определить предложения какие они по цели высказывания и по интонации
Русский язык.
"Три толстяка" Называли эту площадь Площадью Звезды последующей причине.
Русский язык.
на одной грядке коротышки посадили 3 ряда морковок по 8 штук
Разные вопросы.
Облако тегов