Переворот главной и побочной диагоналей матрицы

Задача

Задана матрица A (n, n) действительных чисел. "Перевернуть" в ней главную и побочную диагонали (переписать цифры в обратном порядке).

Решение

 

Чтобы у матрицы были диагонали, она должна быть квадратной, т.е. n = m.

Элементы главной диагонали имеют индекс [i,i]. Побочной [i,n-i+1].

Для того, чтобы "перевернуть" диагонали, не надо перебирать всю матрицу. Достаточно перебрать половину

Программа на языке Паскаль: 

 

const
    n = 5;
var
    arr: array[1..n,1..n] of real;
    i,j: byte;
    a: real;
begin
    randomize;
    for i:=1 to n do begin
        for j:=1 to n do begin
            arr[i,j] := random();
            write(arr[i,j]:4:1);
        end;
        writeln;
    end;
    writeln;
    for i:=1 to n div 2 do
        for j:=1 to n div 2 do
            if i = j then begin
                a := arr[i,j];
                arr[i,j] := arr[n-i+1,n-j+1];
                arr[n-i+1,n-j+1] := a;
            end;
 
    for i:= (n div 2)+1 to n do
        for j:=1 to n div 2 do
            if j = n-i+1 then begin
                a := arr[i,j];
                arr[i,j] := arr[j,i];
                arr[j,i] := a;
            end;
 
   for i:=1 to n do begin
        for j:=1 to n do
            write(arr[i,j]:4:1);
        writeln;
    end;
 
readln;
end.

 

Тема

Матрицы

Уровень

Сложные задачи