Создать квадратную матрицу, расположив числа натурального ряда по направлению стрелки - PascalABC.NET
Формулировка задачи:
Нужно создать квадратную матрицу, расположив числа натурального ряда по направлению стрелки. На других позициях элементы равняются нулю. Начать с правого верхнего угла
Решение задачи: «Создать квадратную матрицу, расположив числа натурального ряда по направлению стрелки»
textual
Листинг программы
const nmax=20;
var a:array[1..nmax,1..nmax] of integer;
n,i,j,z,k:integer;
begin
repeat
write('Размер массива от 3 до ',nmax,' n=');
readln(n);
until n in [3..nmax];
k:=0;
for z:=n-1 downto -n+1 do
begin
if z mod 2=0 then
begin
for j:=n downto 1 do
if (j-z>0) and (j-z<=n) then
begin
inc(k);
a[j-z,n-j+1]:=k;
end;
end
else
begin
for j:=1 to n do
if (j-z>0) and (j-z<=n) then
begin
inc(k);
a[j-z,n-j+1]:=k;
end
end
end;
writeln('Массив:');
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:3);
writeln;
end;
end.
Объяснение кода листинга программы
- Объявляются переменные: n, i, j, z, k (размер матрицы, индексы строк и столбцов, счётчик для заполнения матрицы, номер элемента) типа integer.
- Цикл repeat предназначен для получения от пользователя размера матрицы.
- В цикле for z:=n-1 downto -n+1 выполняется вычисление смещения строки и столбца для заполнения элементов матрицы.
- В зависимости от значения переменной z (четность или нечетность) выполняется соответствующий цикл for для заполнения элементов матрицы.
- Выполняется вывод матрицы на экран с помощью цикла for i:=1 to n и цикла for j:=1 to n.
- Каждый элемент матрицы выводится на экран с помощью выражения write(a[i,j]:3).