Найти максимальный элемент матрицы среди стоящих на диагоналях и поменять с элементом, стоящим на пересечении диагоналей - Pascal

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

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

Дана матрица А(n m). n - нечетное , все элементы различные. Найти максимальный элемент среди стоящих на обеих диагоналях и поменять его местами с элементом , стоящим на пересечении этих диагоналей.

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

textual
Листинг программы
uses crt;
const nmax=15;
var a:array[1..nmax,1..nmax] of integer;
    n,i,j,mx,imx,jmx,x:integer;
begin
clrscr;
randomize;
repeat
write('Размер матрицы, нечетное число от 3  до ',nmax,' n=');
readln(n);
until(n in [3..nmax])and odd(n);
writeln('Исходная матрица:');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=random(50);
    write(a[i,j]:3);
   end;
  writeln;
 end;
mx:=a[1,1];
imx:=1;
jmx:=1;
for i:=1 to n do
 begin
  if a[i,i]>mx then
   begin
    mx:=a[i,i];
    imx:=i;
    jmx:=i;
   end;
  if a[i,n-i+1]>mx then
   begin
    mx:=a[i,n-i+1];
    imx:=i;
    jmx:=n-i+1;
   end;
 end;
writeln('Максимальный элемент на диагоналях a[',imx,',',jmx,']=',mx);
if(imx=jmx)then writeln('Максимальный элемент на пересечении диагоналей')
else
 begin
  writeln('Обмен максимального с элементом на пересечении диагоналей:');
  x:=a[imx,jmx];
  a[imx,jmx]:=a[n div 2+1,n div 2+1];
  a[n div 2+1,n div 2+1]:=x;
  for i:=1 to n do
   begin
    for j:=1 to n do
    write(a[i,j]:3);
    writeln
   end
 end;
readln
end.

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

  1. Объявлены переменные: n, i, j, mx, imx, jmx, x (тип: integer) a (тип: array[1..nmax,1..nmax] of integer)
  2. В цикле повторяется выполнение программы с различными размерами матрицы (от 3 до nmax) до тех пор, пока размер матрицы будет нечетным числом от 3 до nmax.
  3. Выводится сообщение об исходной матрице (15 строк по n).
  4. В каждой строке выводятся значения элементов матрицы (по 3 цифры каждого элемента через пробел).
  5. Определяются начальные значения для переменных mx, imx, jmx.
  6. Циклом проходится каждый элемент матрицы (по строкам).
  7. Если текущий элемент больше значения mx, то обновляются значения mx, imx, jmx.
  8. Если текущий элемент больше значения mx, но находится не на главной диагонали, то выполняется обмен с элементом на пересечении диагоналей.
  9. Выводится сообщение о максимальном элементе на диагоналях матрицы.
  10. Если imx=jmx, то выводится сообщение о максимальном элементе на пересечении диагоналей.
  11. Если imx≠jmx, то выполняется обмен максимального элемента с элементом на пересечении диагоналей.
  12. Выводится сообщение о новой матрице (15 строк по n).
  13. Циклом проходится каждая строка новой матрицы (по элементам).
  14. В каждой строке выводятся значения элементов новой матрицы (по 3 цифры каждого элемента через пробел).
  15. Циклом проходится каждая строка новой матрицы (по элементам).
  16. Завершается выполнение программы.

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


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

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

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