лабораторная работа / А5 заполнение по диагоналям (зад 38) / ARTO
.DOCvar
direction: Boolean; //направление движения по диагонали (вверх или вниз)
i,j,k: integer; //счетчики i и j – номера ячеек заполняемого массива, k – вставляемая в массив цифра (растет вверх)
a : array[1..8,1..8] of integer; //сам массив-матрица
begin
direction := true;//труе значит идем вверх. Ложь – значит идем вниз.
i:=1; //начальные параметры
j:=1;
for k:=1 to 36 do //до 36, а остальное (от 37 до 64) заполняется синхронно с от 1 до //29. Главная диагональ (29-36 заполняется два раза одинаковыми значениями – //издержка алгоритма)
begin
a[i,j]:=k; //заполняем верхнюю половину
a[9-i,9-j]:=65-k; //и одновременно нижнюю
if direction then //если дирекшион=правда, то идем вверх
begin
inc(i); //то же самое, что и:=и+1
dec(j); //то же самое, что жи:жи-1
end
else
begin//если дирекшион=ложь, идем вниз
dec(i);
inc(j);
end;
if j=0 then//если вышли за матрицу, возвращаемся в ее пределы и меняем направление
begin
j:=1; direction:=not(direction); end;
if i=0 then
begin
i:=1; direction:=not(direction); end;
end;
WriteLn;//выводим массив на экран. Построчно (а иначе как еще?)
for j:=1 to 8 do
begin
for i:=1 to 8 do Write(a[i,j]:4);
WriteLn; end;
ReadLn; end.