Дано натуральное число n. Необходимо расположить числа от 1 до n 2 в квадратном массиве по спирали. Отсчет начать от левого верхнего угла, далее двигаться в направлении «восток-юг-запад север» и.т.д. Программа должна содержать процедуру вывода массива и процедуру заполнения массива по спирали — Pascal(Паскаль)

Program Spiral;
uses crt;
const n = 6;
type
 TMx = array[1..n,1..n] of integer;
Procedure Print(mx : TMx);
{Процедура вывода массива}
var
 i,j : byte;
begin
 writeln; writeln;
for i := 1 to n do begin
 writeln;
for j := 1 to n do write(mx[i,j]:2,' ');
 end;
 end;
Procedure SpiralFill(var mx : TMx);
{Процедура заполнения массива по спирали}
var
 i,j,c : byte;
begin
 i := 1;
 j := 1;
 c := 0;
repeat
while (j <= n - c) do
begin
 readln(mx[i,j]); inc(j);
 end;
{движение в направлении "запад-восток"}
 inc(i); dec(j);
while (i <= n - c) do
begin
 readln(mx[i,j]); inc(i);
 end;
{движение в направлении "север-юг"}
 dec(j); dec(i);
while (j >= 1 + c) do
begin
 readln(mx[i,j]); dec(j);
 end;
{движение в направлении "восток-запад"}
 inc( c ); inc(j); dec(i); {параметр с увеличился на 1}
while (i >= 1 + c) do
begin
 readln(mx[i,j]); dec(i);
 end;
{движение в направлении "юг-север"}
 inc(j); inc(i);
until c > n div 2;
 end;
var
 m : TMx;
begin
 clrscr;
 SpiralFill(m);
 Print(m);
 readln;
End.

Leave a Comment

11 − = 6