Заполнение матрицы по периметру по часовой стрелке
var
a:array[1..15,1..15] of integer;
i,j,m,n,s:integer;
x,y:integer; {коордтнаты текущей ячейки}
napr,shag:byte; {направление движения и размер шага соответственно}
begin
write('Введите количество строк=');
readln(n);
write('Введите количество столбцов=');
readln(m);
randomize;
writeln('Матрица');
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(51); {заполнение матрицы случайными числами и вывод ее на экран}
write(a[i,j]:4);
end;
writeln;
end;
x:=0;
y:=1;
s:=0;
napr:=1;
shag:=n;
writeln('После заполнения');
repeat
begin
for i:=1 to shag do
begin
case napr of
1: inc(x); {движемся вниз}
2: inc(y); {вправо}
3: dec(x); {вверх}
4: dec(y); {влево}
end;
inc(s); {увеличиваем счетчик}
a[x,y]:=s; {заполняем текущий элемент}
end;
inc(napr); {меняем направление}
if (napr mod 2=0) then shag:=m-1 else shag:=n-1; {если napr четное, то движемся по кол-ву столбцов, а если нет, то по кол-ву строк}
end;
until (napr=5); {до тех пор, пока не пройдем во всех направлениях}
a[1,1]:=1; {первая клетка окажется заполненной, поэтому возвращаем ей 1}
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j]:4); {вывод матрицы}
writeln;
end;
readln
end.
Комментарии:
Нету комментариев для вывода...