Дана действительная квадратная матрица порядка 2n. Получить новую матриц, переставляя её блоки по диагонали размера n*n — Pascal(Паскаль)

Program matritza;

const
  n = 4;

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

begin
  // ввод
  for i := 1 to 2 * n do
  begin
    for j := 1 to 2 * n do
    begin
      read(a[i, j]);
      write(' ');
    end;
    writeln;
  end;
  // изменения блоков
  for i := 1 to n do
    for j := i to n do
    begin
      // блок 1
      p := a[j, i];
      a[j, i] := a[i, j];
      a[i, j] := p;
      // блок 2
      p := a[j + n, i];
      a[j + n, i] := a[i + n, j];
      a[i + n, j] := p;
      // блок 3
      p := a[j, i + n];
      a[j, i + n] := a[i, j + n];
      a[i, j + n] := p;
      // блок 4
      p := a[j + n, i + n];
      a[j + n, i + n] := a[i + n, j + n];
      a[i + n, j + n] := p;
    end;
  // вывод
  for i := 1 to 2 * n do
  begin
    for j := 1 to 2 * n do
      write(a[i, j], ' ');
    writeln;
  end;

end.

Leave a Comment

+ 27 = 37