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