Поворот на 90 градусов по часовой стрелке и против без использования дополнительного массива — Pascal(Паскаль)

uses crt;

const
  n = 6;

var
  a: array [1 .. n, 1 .. n] of integer;
  i, j, p, x: integer;

begin
  clrscr;
  writeln('Исходная матрица:');
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      a[i, j] := 10 * i + j;
      write(a[i, j]:4);
    end;
    writeln;
  end;
  p := n div 2;
  { поворот по часовой стрелке }
  for i := 1 to p do
    for j := i to n - i do
    begin
      x := a[i, j];
      a[i, j] := a[n - j + 1, i];
      a[n - j + 1, i] := a[n - i + 1, n - j + 1];
      a[n - i + 1, n - j + 1] := a[j, n - i + 1];
      a[j, n - i + 1] := x;
    end;
  writeln('Поворот на 90 градусов по часовой стрелке:');
  for i := 1 to n do
  begin
    for j := 1 to n do
      write(a[i, j]:4);
    writeln;
  end;
  { поворот против часовой стрелки }
  for i := 1 to p do
    for j := i to n - i do
    begin
      x := a[i, j];
      a[i, j] := a[j, n - i + 1];
      a[j, n - i + 1] := a[n - i + 1, n - j + 1];
      a[n - i + 1, n - j + 1] := a[n - j + 1, i];
      a[n - j + 1, i] := x;
    end;
  writeln('Поворот на 90 градусов против часовой стрелки:');
  for i := 1 to n do
  begin
    for j := 1 to n do
      write(a[i, j]:4);
    writeln;
  end;
  readln

end.

Leave a Comment

8 + 2 =