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