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

max:=a[1,1];
maxx:=1;
maxy:=1;
for i:=1 to n do
 begin
  if max<a[i,i] then
  begin
   max:=a[i,i];
   maxx:=i;
   maxy:=i;
  end;
  if max<a[i,n-i+1] then
  begin
   max:=a[i,n-i+1];
   maxx:=i;
   maxy:=n-i+1;
  end;
 end;
 
a[maxx,maxy]:=a[(n div 2)+1,(n div 2)+1];
a[(n div 2)+1,(n div 2)+1]:=max;

Вариант 2

uses
  crt;
const
  n=3;
var
  a:array [1..n,1..n] of real;
  i,j,tempj,tempi:integer;
  temp,max:real;
begin
  clrscr;
  writeln('Матрица:');
  for i:=1 to n do
  begin
    for j:=1 to n do
    begin
      a[i,j]:=random(8)-4;
      write(a[i,j]:2:0,' ')
    end;
    writeln
  end;
  max:=a[1,1];
  tempi:=1;
  tempj:=1;
  for i:=1 to n do
    for j:=1 to n do
      if (i=j) or (n-i+1=j) then
        if a[i,j]>max then
        begin
          max:=a[i,j];
          tempi:=i;
          tempj:=j
        end;
  writeln('Максимальный = ',max,'. Ýòî ýëåìåíò a[',tempi,',',tempj,']');
  temp:=a[(n div 2)+1,(n div 2)+1];
  a[(n div 2)+1,(n div 2)+1]:=a[tempi,tempj];
  a[tempi,tempj]:=temp;
  writeln('Матрица:');
  for i:=1 to n do
  begin
    for j:=1 to n do
      write(a[i,j]:2:0,' ');
    writeln
  end;
end.

Leave a Comment

68 − = 65