Упорядочить элементы каждого столбца матрицы по возрастанию методом линейного выбора с обменом (по условию) - Free Pascal
Формулировка задачи:
Мне очень нужен программный код к такому заданию.
Дана действительная матрица A(n*n) . Если сумма минимальных элементов каждой строки больше суммы минимальных элементов каждого столбца, то упорядочить элементы каждого столбца матрицы по возрастанию методом линейного выбора с обменом.В противном случае матрицу оставить без изменений.
Решение задачи: «Упорядочить элементы каждого столбца матрицы по возрастанию методом линейного выбора с обменом (по условию)»
textual
Листинг программы
uses Crt;
const n=5;
type Tmatr=array[1..n,1..n] of integer;
var a:Tmatr;
i,j,min,m,t,k,sum1,sum2:integer;
begin
ClrScr;
Writeln('Matrix A:');
Writeln;
Randomize;
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=Random(50)+1;
Write(a[i,j]:4);
end;
Writeln;
end;
Writeln;
sum1:=0; sum2:=0;
i:=1;
repeat
min:=MaxInt;
for j:=1 to n do
if a[i,j]<min
then min:=a[i,j];
sum1:=sum1+min;
Inc(i);
until i>n;
j:=1;
repeat
min:=MaxInt;
for i:=1 to n do
if a[i,j]<min
then min:=a[i,j];
sum2:=sum2+min;
Inc(j);
until j>n;
if sum1>sum2
then
begin
j:=1;
repeat
for i:=1 to n-1 do
begin
min:=a[i,j];
m:=i;
for t:=i+1 to n do
if a[t,j]<min
then
begin
min:=a[t,j];
m:=t;
end;
k:=a[m,j];
a[m,j]:=a[i,j];
a[i,j]:=k;
end;
Inc(j);
until j>n;
Writeln('Summa min strok > summi min stolbcov');
Writeln('Matrix A:');
Writeln;
for i:=1 to n do
begin
for j:=1 to n do
Write(a[i,j]:4);
Writeln;
end;
end
else
Writeln('Summa min strok < summi min stolbcov');
ReadKey;
end.
Объяснение кода листинга программы
- Объявлены переменные: — a: массив типа Tmatr для хранения элементов матрицы; — i, j: индексы для обращения к элементам матрицы; — min, m, t, k, sum1, sum2: целочисленные переменные для выполнения операций сравнения и обмена; — n: константа для определения размера матрицы; — Crt: модуль для работы с консолью.
- Задана матрица случайными значениями от 1 до 50 с помощью функции Random и цикла for. Каждое значение матрицы выводится на экран с помощью функции Write.
- Вычисляются суммы min элементов каждой строки матрицы с помощью цикла repeat-until и вложенного цикла for. Переменная min обновляется при каждом проходе внутреннего цикла.
- Если сумма min элементов первого массива больше, чем второго, то выполняется блок кода, который меняет местами минимальные элементы строк с помощью вложенного цикла for и условного оператора if.
- Если условие из пункта 4 не выполняется, то выводится сообщение
Summa min strok < summi min stolbcovс помощью функции Writeln. - Если условие из пункта 4 выполняется, то выполняется блок кода, который меняет местами минимальные элементы строк с помощью вложенного цикла for и условного оператора if.
- После выполнения всех операций выводится сообщение
Matrix A:и все элементы матрицы выводятся на экран с помощью цикла for и функции Write. - В конце программы ожидается нажатие клавиши с помощью функции ReadKey.