Дано натуральное число n. Необходимо расположить числа от 1 до n 2 в квадратном массиве по спирали

Отсчет начать от левого верхнего угла, далее двигаться в направлении «восток-юг-запад север» и.т.д. Программа должна содержать процедуру вывода массива и процедуру заполнения массива по спирали.

code: #pascal
  1. Program Spiral;
  2. uses crt;
  3. const n = 6;
  4. type
  5.  TMx = array[1..n,1..n] of integer;
  6. Procedure Print(mx : TMx);
  7. {Процедура вывода массива}
  8. var
  9.  i,j : byte;
  10. begin
  11.  writeln; writeln;
  12. for i := 1 to n do begin
  13.  writeln;
  14. for j := 1 to n do write(mx[i,j]:2,' ');
  15.  end;
  16.  end;
  17. Procedure SpiralFill(var mx : TMx);
  18. {Процедура заполнения массива по спирали}
  19. var
  20.  i,j,c : byte;
  21. begin
  22.  i := 1;
  23.  j := 1;
  24.  c := 0;
  25. repeat
  26. while (j <= n - c) do
  27. begin
  28.  readln(mx[i,j]); inc(j);
  29.  end;
  30. {движение в направлении "запад-восток"}
  31.  inc(i); dec(j);
  32. while (i <= n - c) do
  33. begin
  34.  readln(mx[i,j]); inc(i);
  35.  end;
  36. {движение в направлении "север-юг"}
  37.  dec(j); dec(i);
  38. while (j >= 1 + c) do
  39. begin
  40.  readln(mx[i,j]); dec(j);
  41.  end;
  42. {движение в направлении "восток-запад"}
  43.  inc( c ); inc(j); dec(i); {параметр с увеличился на 1}
  44. while (i >= 1 + c) do
  45. begin
  46.  readln(mx[i,j]); dec(i);
  47.  end;
  48. {движение в направлении "юг-север"}
  49.  inc(j); inc(i);
  50. until c > n div 2;
  51.  end;
  52. var
  53.  m : TMx;
  54. begin
  55.  clrscr;
  56.  SpiralFill(m);
  57.  Print(m);
  58.  readln;
  59. End.
Поделиться:

Похожие статьи: