Упорядочить элементы каждого столбца матрицы по возрастанию методом линейного выбора с обменом (по условию) - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д