Если максимальный элемент квадратной матрицы находится выше главной диагонали, транспонировать ее - 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.
Объяснение кода листинга программы
- const n=5; — задает значение переменной n равное 5
- type matrix= array [1..n, 1..n] of byte; — определяет тип массива a как массив байтов размером n на n
- 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;
- 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,']');
- 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;
- 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);
- var a: matrix; — объявляет переменную a типа matrix
- 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;
- end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д