Если максимальный элемент квадратной матрицы находится выше главной диагонали, транспонировать ее - Pascal ABC

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

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

задача легкая,но я встретил трудности со знанием синтаксиса паскаля,а вот собственно и задача Если максимальный элемент квадратной матрицы находится выше главной диагонали,транспонировать матрицу,иначе определить сумму элементов строки и столбца с номерами,равными индексам максимального элемента
Решение через подпрограммы обязательно,хотя смысла в них 0,буду благодарен.А то что сверху,я как-то попытался побрыкаться,но так и не понял как описывать массивы

Решение задачи: «Если максимальный элемент квадратной матрицы находится выше главной диагонали, транспонировать ее»

textual
Листинг программы
const n=5;
type matrix= array [1..n, 1..n] of byte;
procedure vvod(var a:matrix);
var i,j:byte;
begin
randomize;
writeln('Исходная матрица');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=random(100);
    write(a[i,j]:3);
   end;
  writeln;
 end;
end;
procedure poisk(a:matrix;var imx,jmx:byte);
var i,j:byte;
begin
imx:=1;
jmx:=1;
for i:=1 to n do
for j:=1 to n do
if a[i,j]>a[imx,jmx] then
 begin
  imx:=i;
  jmx:=j;
 end;
writeln('Максимальный элемент=',a[imx,jmx],' его координаты [',imx,',',jmx,']');
end;
procedure transponirovka(var a:matrix);
var i,j,k:byte;
begin
for i:=2 to n do
for j:=1 to i-1 do
 begin
  k:=a[i,j];
  a[i,j]:=a[j,i];
  a[j,i]:=k;
 end;
writeln('Транспонированная матрица');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:3);
  writeln;
 end;
end;
procedure summa(a:matrix;imx,jmx:byte;var s:integer);
var i,j:byte;
begin
s:=0;
for i:=1 to n do
s:=s+a[imx,i]+a[i,jmx];
s:=s-a[imx,jmx];
writeln('Сумма элементов строки номер ',imx,' и столбца номер ',jmx,'=',s);
end;
var a: matrix;
    imx,jmx:byte;
    s: integer;
begin
vvod(a);
poisk(a,imx,jmx);
if jmx>imx then
 begin
  writeln('Максимальный элемент выше главной диагонали');
  transponirovka(a);
 end
else
 begin
  writeln('Максимальный элемент не выше главной диагонали');
  summa(a,imx,jmx,s);
 end;
end.

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

  1. const n=5; — задает значение переменной n равное 5
  2. type matrix= array [1..n, 1..n] of byte; — определяет тип массива a как массив байтов размером n на n
  3. procedure vvod(var a:matrix); — объявляет процедуру vvod, которая принимает массив a в качестве параметра и выполняет следующие действия: — randomize — инициализирует генератор случайных чисел — writeln('Исходная матрица'); — for i:=1 to n do — for j:=1 to n do — begin — a[i,j]:=random(100); — присваивает случайное значение элементу a[i,j] — write(a[i,j]:3); — выводит значение a[i,j] — end; — writeln; — end; — end;
  4. procedure poisk(a:matrix;var imx,jmx:byte); — объявляет процедуру poisk, которая принимает массив a в качестве параметра и выполняет следующие действия: — imx:=1; — jmx:=1; — for i:=1 to n do — for j:=1 to n do — if a[i,j]>a[imx,jmx] then — begin — imx:=i; — jmx:=j; — end; — writeln('Максимальный элемент=',a[imx,jmx],' его координаты [',imx,',',jmx,']');
  5. procedure transponirovka(var a:matrix); — объявляет процедуру transponirovka, которая принимает массив a в качестве параметра и выполняет следующие действия: — for i:=2 to n do — for j:=1 to i-1 do — begin — k:=a[i,j]; — a[i,j]:=a[j,i]; — a[j,i]:=k; — end; — writeln('Транспонированная матрица'); — for i:=1 to n do — for j:=1 to n do — write(a[i,j]:3); — writeln; — end; — end;
  6. procedure summa(a:matrix;imx,jmx:byte;var s:integer); — объявляет процедуру summa, которая принимает массив a в качестве параметра, значения imx и jmx в качестве параметров и выполняет следующие действия: — s:=0; — for i:=1 to n do — s:=s+a[imx,i]+a[i,jmx]; — s:=s-a[imx,jmx]; — writeln('Сумма элементов строки номер ',imx,' и столбца номер ',jmx,'=',s);
  7. var a: matrix; — объявляет переменную a типа matrix
  8. begin — vvod(a); — poisk(a,imx,jmx); — if jmx>imx then — begin — writeln('Максимальный элемент выше главной диагонали'); — transponirovka(a); — end — else — begin — writeln('Максимальный элемент не выше главной диагонали'); — summa(a,imx,jmx,s); — end; — end;
  9. end.

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


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

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

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