Заполнить массив по заданной схеме - Pascal ABC
Формулировка задачи:
Заполнить массив следующим образом:
Решение задачи: «Заполнить массив по заданной схеме»
textual
Листинг программы
const n=10; var a:array[1..n,1..n] of byte; m,k,i,j:byte; begin m:=n div 2; k:=0; for i:=1 to m do case i of 1,5:for j:=1 to n do a[i,j]:=(i div 2)*n+j-m*(i div m); 2,4:for j:=n downto 1 do a[i,j]:=(m-i+1)*m-j+1+m*((i+1) div m); 3:begin for j:=1 to n do if j<=n div 2 then a[i,j]:=(i-1)*n+j else a[i,j]:=j-(n div 2); end; end; for i:=1 to m do for j:=1 to n do a[i+m,j]:=a[i,j]; for i:=1 to n do begin for j:=1 to n do write(a[i,j]:3); writeln; end; end.
Объяснение кода листинга программы
- В начале программы объявляются переменные и массив: — n — размерность массива (10); — a — двумерный массив (10х10) типа byte; — m, k, i, j — вспомогательные переменные типа byte.
- Задаётся значение переменной m равное n/2 (5 в данном случае), т.е. количество строк в первой половине массива, которые будут заполняться по особой схеме.
- Переменная k инициализируется нулём. Она нужна для вычисления значений в ячейках массива по определённой формуле.
- В первой половине массива (5 строк) заполняются ячейки по разным формулам в зависимости от номера строки: — при i=1,5: (i div 2)n+j-m(i div m) — в первой и пятой строке сумма номера столбца и разность между номером строки и номером строки, делённым на 2; — при i=2,4: (m-i+1)m-j+1+m((i+1) div m) — во второй и четвёртой строке разность между номером строки и номером строки, делённым на 2, и сумма номера столбца и 1, а также (i+1) div m; — при i=3: (i-1)*n+j — в третьей строке разность между номером строки и номером строки — 1 и номер столбца.
- Заполнение оставшихся строк массива (от i=6 до i=10) происходит по формуле a[i,j]:=a[i-m,j].
- Вывод значений ячеек массива на экран по 3 цифры в строке.
- Пример вывода: 6 7 8 9 10 3 4 5 6 7 2 3 4 5 6 1 2 3 4 5
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д