Задана произвольная случайным образом заполненная квадратная матрица размером 17×17. Расположить элементы матрицы «улиткой» — Pascal(Паскаль)

«Улитка» — расположение элементов массива в следующем порядке — меньший порядковый номер означает меньшее значение элемента. Пример для матрицы 5×5: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9

Program fail1;

var
  i, j, a, max: integer;
  m: array [1 .. 20, 1 .. 20] of integer;
  v: array [1 .. 290] of integer;

begin
  randomize;
  { a:=random(30)+1; }

  max := 5;
  for i := 1 to 17 do
    for j := 1 to 17 do
    begin
      inc(a);
      m[i, j] := a;
    end;

  a := 0; { zapisi }
  for i := 1 to 17 do
    for j := 1 to 17 do
    begin
      inc(a);
      v[a] := m[i, j];
    end;

  a := 0;
  for j := 1 to 17 do
  begin
    inc(a);
    m[1, j] := v[a];
  end;
  for i := 2 to 17 do
  begin
    inc(a);
    m[i, 17] := v[a];
  end;
  for j := 16 downto 1 do
  begin
    inc(a);
    m[17, j] := v[a];
  end;
  for i := 16 downto 2 do
  begin
    inc(a);
    m[i, 1] := v[a];
  end;

  for j := 2 to 16 do
  begin
    inc(a);
    m[2, j] := v[a];
  end;
  for i := 3 to 16 do
  begin
    inc(a);
    m[i, 16] := v[a];
  end;
  for j := 15 downto 2 do
  begin
    inc(a);
    m[16, j] := v[a];
  end;
  for i := 15 downto 3 do
  begin
    inc(a);
    m[i, 2] := v[a];
  end;

  for j := 3 to 15 do
  begin
    inc(a);
    m[3, j] := v[a];
  end;
  for i := 4 to 15 do
  begin
    inc(a);
    m[i, 15] := v[a];
  end;
  for j := 14 downto 3 do
  begin
    inc(a);
    m[15, j] := v[a];
  end;
  for i := 14 downto 4 do
  begin
    inc(a);
    m[i, 3] := v[a];
  end;

  for j := 4 to 14 do
  begin
    inc(a);
    m[4, j] := v[a];
  end;
  for i := 5 to 14 do
  begin
    inc(a);
    m[i, 14] := v[a];
  end;
  for j := 13 downto 4 do
  begin
    inc(a);
    m[14, j] := v[a];
  end;
  for i := 13 downto 5 do
  begin
    inc(a);
    m[i, 4] := v[a];
  end;

  for j := 5 to 13 do
  begin
    inc(a);
    m[5, j] := v[a];
  end;
  for i := 6 to 13 do
  begin
    inc(a);
    m[i, 13] := v[a];
  end;
  for j := 12 downto 5 do
  begin
    inc(a);
    m[13, j] := v[a];
  end;
  for i := 12 downto 6 do
  begin
    inc(a);
    m[i, 5] := v[a];
  end;

  for j := 6 to 12 do
  begin
    inc(a);
    m[6, j] := v[a];
  end;
  for i := 7 to 12 do
  begin
    inc(a);
    m[i, 12] := v[a];
  end;
  for j := 11 downto 6 do
  begin
    inc(a);
    m[12, j] := v[a];
  end;
  for i := 11 downto 7 do
  begin
    inc(a);
    m[i, 6] := v[a];
  end;

  for j := 7 to 11 do
  begin
    inc(a);
    m[7, j] := v[a];
  end;
  for i := 8 to 11 do
  begin
    inc(a);
    m[i, 11] := v[a];
  end;
  for j := 10 downto 7 do
  begin
    inc(a);
    m[11, j] := v[a];
  end;
  for i := 10 downto 8 do
  begin
    inc(a);
    m[i, 7] := v[a];
  end;

  for j := 8 to 10 do
  begin
    inc(a);
    m[8, j] := v[a];
  end;
  for i := 9 to 10 do
  begin
    inc(a);
    m[i, 10] := v[a];
  end;
  for j := 9 downto 8 do
  begin
    inc(a);
    m[10, j] := v[a];
  end;
  for i := 9 downto 9 do
  begin
    inc(a);
    m[i, 8] := v[a];
  end;

  inc(a);
  m[9, 9] := v[a];

  for i := 1 to 17 do
  begin
    writeln;
    for j := 1 to 17 do
      write(m[i, j]:4);
  end;
  writeln;
  writeln;

  readln;

end.

Leave a Comment

47 − = 43