Заполнение матрицы змейкой - Pascal (251471)
Формулировка задачи:
Заполните матрицу, содержащую N строк и M столбцов.
1 6 7 12
2 5 8 11
3 4 9 10
заполнять по системе "змейкой" от 1 до N*M
Решение задачи: «Заполнение матрицы змейкой»
textual
Листинг программы
const max = 19; var a: array[1..max, 1..max] of integer; i, j, n, m: integer; begin repeat write('n in [1..', max, ']; n = '); readln(n) until n in [1..max]; repeat write('m in [1..', max, ']; m = '); readln(m) until m in [1..max]; for i := 1 to n do begin for j := 1 to m do begin if odd(j) then a[i, j] := (j - 1) * n + i else a[i, j] := j * n - i + 1; write(a[i, j] :4) end; writeln end; readln end.
Объяснение кода листинга программы
- В первой строке объявлена константа
max
, которая определяет размер матрицы. - Далее объявлена сама матрица
a
размеромmax x max
. - Затем объявлены четыре переменные:
i
,j
,n
,m
, которые будут использоваться в цикле. - Цикл
repeat
выполняется до тех пор, пока не будет введено корректное значение дляn
в диапазоне от 1 доmax
. - Цикл
repeat
выполняется до тех пор, пока не будет введено корректное значение дляm
в диапазоне от 1 доmax
. - Два вложенных цикла
for
используются для заполнения матрицыa
. - Если
j
- нечетное число, то элементa[i, j]
заполняется значением (j-1)*n+i. - Если
j
- четное число, то элементa[i, j]
заполняется значением j*n-i+1. - Значение каждого элемента
a[i, j]
выводится на экран с помощью функцииwrite
. - После завершения вложенных циклов выводится символ новой строки
writeln
. - После завершения циклов
repeat
программа ожидает ввода пользователя с помощью функцииreadln
.