Необходимо матрицу размером 5 на 5 развернуть на 180 градусов
В чем именно проблема?
Что пробовали делать, что получилось, что не получилось?
И где хоть развернуть-то, на листочке?))
Ну берете листик. Пишете или рисуете там матрицу. Поворачиваете листочек и вуаля задача решена ))
на самом деле есть много вариантов решения вашей задачи (разных алгоритмов).
Самый простой - просто вывести исходную матрицу на экран в обратном порядке:
// вывод повёрнутой на 180 матрицы на экран (без реальной перестановки элементов)
WriteLn('Matrix transponse:');
for i:=n downto 1 do begin
for j:=n downto 1 do Write(matr[i,j]:3);
WriteLn
end;
Если же нужно получить матрицу с переставленными элементами, то тут тоже два варианта.
- создать новую матрицу и перенести из старой элементы в обратном порядке (см. вывод в обратном порядке)
- переставлять элементы внутри старой матрицы.
вот как это выглядит на Паскаль:
const n=5;
var i, j : integer;
matr : array[1..n,1..n] of integer;
k : integer;
begin
for i:=1 to n do
for j:=1 to n do
matr[i,j] := (i-1)*n+j;
// вывод матрицы на экран
for i:=1 to n do begin
for j:=1 to n do Write(matr[i,j]:3);
WriteLn
end;
// поворот на 180 градусов
for i:=1 to n div 2 do
for j:=1 to n do begin
k:=matr[i,j];
matr[i,j] := matr[n+1-i,n+1-j];
matr[n+1-i,n+1-j] := k
end;
if odd(n) then
for j:=1 to n div 2 do begin
k:=matr[(n div 2)+1,j];
matr[(n div 2)+1,j] := matr[(n div 2)+1,n+1-j];
matr[(n div 2)+1,n+1-j] := k
end;
WriteLn('New matrix');
// вывод матрицы на экран
for i:=1 to n do begin
for j:=1 to n do Write(matr[i,j]:3);
WriteLn
end;
end.