Помощь - Поиск - Пользователи - Календарь
Полная версия: Заполнение матрици по спирали
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
klem4
Наткнулся на эту задачу в книге олимпиадной, решил сделать сам, код не похож на тот что в нашем FAQ, по этому выкладываю, может кому-нибудь пригодится, алгоритм прост, совершаем обход матрици по "кругу", каждый следующий проход, сокращая его "радиус"

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);

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.
APAL
Так может надо было сразу в FAQ?
klem4
Пускай "Суровый профи" оценит я думаю lol.gif
volvo
А чего его оценивать? Он что, сильно отличается от этого ?
klem4
Клон ph34r.gif

Я думаю тогда стоит все в faq добавить ?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.