четверг, 4 июня 2009 г.

спираль

помогите с паскалем плиииз, совсем его не понимаю....

20 Составить программу, которая заполняет квадратную мат¬рицу порядка п натуральными числами 1, 2, 3, ..n, записывая их в нее «по спирали».(двумерные массивы)







while n < N*N do
begin
if h <> 0 then begin {горизонтальное движение}
if h > 0 then begin {прямо}
if (i + 1 > N - 1) or (A[i + 1, j] <> -1) then begin {вылезли за пределы матрицы или уже заполненое значением поле}
h := 0; v := +1; {меняем направление движения по часовой стрелке}
end;
end else begin {назад}
if (i - 1 < 0) or (A[i - 1, j] <> -1) then begin
h := 0; v := -1;
end;
end;
end else begin {вертикальное движение}
if v > 0 then begin {вниз}
if (j + 1 > N - 1) or (A[i, j + 1] <> -1) then begin
v := 0; h := -1;
end;
end else begin {вверх}
if (j - 1 < 0) or (A[i, j - 1] <> -1) then begin
v := 0; h := +1;
end;
end;
end;

A[i, j] := n;

i := i + h;
j := j + v;

n := n + 1;
end;



готовый рабочий код можно скачать здесь

1 комментарий: