Массив NxN заполнить 0 и 1 - Pascal ABC
Формулировка задачи:
Нужна помощь по заполнению массива таким образом:
код для заполнения одномерного массива (одной строки) я написать смог:
Пошагово отследить программу не получается(
Спойлер
А вот как теперь произвести такое же заполнение для массива NxN не получается((
возвращает вот это:
Спойлер
нашел ошибку: после выполнения внутренних while не обнулил их счетчики))
Решение задачи: «Массив NxN заполнить 0 и 1»
textual
Листинг программы
program apert; const maxn=50; var mas:array[0..maxn-1,0..maxn-1] of integer; i,j,n:integer; begin repeat Write('input n'); ReadLn(n); until (n>=1) and (n<=maxn); for i:=0 to n-1 do for j:=0 to n-1 do if ((i mod 4)>1) or ((j mod 4)>1) then mas[i,j]:=0 else mas[i,j]:=1; // вывод массива WriteLn; for i:=0 to n-1 do begin for j:=0 to n-1 do Write(mas[i,j]:2); WriteLn; end; end.
Объяснение кода листинга программы
Этот код написан на языке Pascal ABC и выполняет следующие действия:
- Объявляет переменные
mas
,i
,j
иn
с соответствующими значениями по умолчанию. - Запрашивает у пользователя ввод числа
n
(количество строк в массиве). - Проверяет, что введенное значение
n
находится в допустимом диапазоне от 1 доmaxn
. - Если условие выполняется, то цикл
repeat
повторяется до тех пор, пока пользователь не введет недопустимое значениеn
. - Внутри цикла
repeat
происходит заполнение массиваmas
нулями и единицами. Для этого используется два вложенных циклаfor
, которые проходят по строкам и столбцам массива. - Если текущая строка или столбец массива не являются четными (остаток от деления на 4 больше или равен 1), то значение элемента массива устанавливается равным нулю. В противном случае значение элемента массива устанавливается равным единице.
- После завершения циклов
for
происходит вывод массива на экран. Для этого используется циклfor
, который проходит по строкам массива и выводит значения элементов массива, преобразованные в двоичную систему счисления. - Конец программы.