Расположить столбцы матрицы в соответственности с ростом характеристик - Turbo Pascal
Формулировка задачи:
Характеристикой столбца целочисленной матрицы назовем суму модулей его
отрицательных непарных элементов. Перемещая столбцы данной матрицы, расположить их в
соответственности с ростом характеристик.
Решение задачи: «Расположить столбцы матрицы в соответственности с ростом характеристик»
textual
Листинг программы
var
a: Array[Byte, Byte] Of ShortInt;
b: Array[Byte] Of Word;
i, j, l, n, m: Byte;
tempW: Word;
tempS: ShortInt;
begin
Randomize();
repeat
Write('Input n=');
ReadLn(n);
until (n > 0);
repeat
Write('Input m=');
ReadLn(m);
until (m > 0);
for j := 0 to m - 1 do
b[j] := 0;
WriteLn('Original array:');
for i := 0 to n - 1 do
begin
for j := 0 to m - 1 do
begin
a[i, j] := Random(199) - 99;
Write(a[i, j]:4);
if ((a[i, j] < 0) And Odd(a[i, j]))
then
Inc(b[j], Abs(a[i, j]));
end;
WriteLn;
end;
for l := 0 to m - 2 do
for j := l + 1 to m - 1 do
if (b[j] < b[l])
then
begin
tempW := b[j];
b[j] := b[l];
b[l] := tempW;
for i := 0 to n - 1 do
begin
tempS := a[i, j];
a[i, j] := a[i, l];
a[i, l] := tempS;
end;
end;
WriteLn;
for i := 0 to n - 1 do
begin
for j := 0 to m - 1 do
Write(a[i, j]:4);
WriteLn;
end;
end.
Объяснение кода листинга программы
- Создается двумерный массив
aтипаArray[Byte, Byte] Of ShortInt, который будет использоваться для хранения значений матрицы. - Создается одномерный массив
bтипаArray[Byte] Of Word, который будет использоваться для хранения суммарных значений каждого столбца. - Создаются три переменные
i,jиlтипаByte, которые будут использоваться для итерации по массивам. - Создается две переменные
tempWиtempSтипаWordиShortIntсоответственно, которые будут использоваться для временного хранения значений. - В цикле
repeatсчитываются значенияnиmс помощью функцииReadLn(). - В цикле
forпроисходит заполнение массиваbнулями. - Выводится сообщение с исходными значениями матрицы.
- В цикле
forпроисходит заполнение массиваaслучайными числами от 0 до 198. - В цикле
forпроисходит сравнение текущей строки с предыдущей и перестановка строк при необходимости. - В цикле
forпроисходит запись значений массиваaв файл. - Выводится сообщение с окончательными значениями матрицы.
- В цикле
forпроисходит запись значений массиваaв файл.