Заполнение главной диагонали матрицы путем перестановки элементов - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Путем перестановки элементов квадратной вещественной матрицы добиться того, чтобы ее максимальный элемент находился в левом верхнем углу, следующий по величине — в позиции (2, 2) , следующий по величине — в позиции (3, 3) и т. д., заполнив таким образом всю главную диагональ. Найти номер первой из строк, не содержащих ни одного положительного элемента.

Решение задачи: «Заполнение главной диагонали матрицы путем перестановки элементов»

textual
Листинг программы
uses crt;
const nmax=20;
var a:array[1..nmax,1..nmax] of integer;
    n,i,j,k,mx,mn,imx,jmx,x:integer;
begin
repeat
write('ГђГ*çìåð Г¬Г*òðèöû äî ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('ГЊГ*òðèöГ*:');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=-10+random(50);
    write(a[i,j]:4);
   end;
  writeln;
 end;
writeln;
mn:=-maxint-1; //Г±Г*ìîå Г¬Г*ëåГ*üêîå ГІГЁГЇГ* integer
for i:=1 to n do
for j:=1 to n do
if a[i,j]<mn then mn:=a[i,j];
for k:=1 to n do //n Г°Г*Г§
 begin
  mx:=mn; //ГЇГіГ±ГІГј Г¬Г*ГЄГ±=ìèГ*
  for i:=1 to n do
  for j:=1 to n do
  //åñëè áîëüøå Г¬Г*ГЄГ± ГЁ Г*ГҐ Г*Г* ìåñòå [k,k]
  if (a[i,j]>mx)and((i>=k)and (j>=k)or(i<>j)) then
   begin
    mx:=a[i,j]; //ГІГ® ГЅГІГ® î÷åðåäГ*îé Г¬Г*ГЄГ±
    imx:=i;  //ГЁ ГҐГЈГ® ГЁГ*äåêñû
    jmx:=j;
   end;
  x:=a[k,k];//îáìåГ*ГўГ*ГҐГ¬ ГҐГЈГ® Г± ýëåìåГ*òîì [k,k]
  a[k,k]:=a[imx,jmx];
  a[imx,jmx]:=x;
 end;
writeln('ГЊГ*ГЄГ±ГЁГ¬Г*ëüГ*ûå Г*Г* ГЈГ«Г*ГўГ*ГіГѕ äèГ*ГЈГ®Г*Г*ëü:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:4);
  writeln;
 end;
end.

Объяснение кода листинга программы

  1. В начале программы подключается библиотека crt, которая предоставляет функции для работы с консолью.
  2. Затем определяется константа nmax, которая ограничивает размер массива a до 20 элементов.
  3. Далее объявляются переменные a, n, i, j, k, mx, mn, imx, jmx, x, которые будут использоваться в программе.
  4. Программа начинается с цикла repeat, который будет выполняться до тех пор, пока n не станет равным 0. Это означает, что программа будет заполнять матрицу a значениями от -10 до 50 случайным образом.
  5. Внутри цикла repeat выполняется цикл for, который проходит по каждому элементу массива a. Для каждого элемента выполняется цикл for, который проходит по всем остальным элементам массива a. Если текущий элемент меньше mn, то значение mn обновляется.
  6. После завершения внутреннего цикла for, выполняется цикл for, который проходит по всем элементам массива a. Если текущий элемент больше mn, то его значение обновляется, а также выводится на экран.
  7. Затем выводится сообщение о том, что заполнение главной диагонали завершено.
  8. В конце программы выводятся значения всех элементов массива a.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы