Заполнение массива "змейкой" - Pascal
Формулировка задачи:
Дано натуральное N (1N10). Заполнить матрицу порядка NN целыми числами 0, 1, 2, 3, …, N2–1 в соответствии со схемой расположения, определенной вариантом в таблице № 3.
Важное замечание. Заполнение матрицы можно организовать двумя способами. Первый (простой) – так организовать перебор индексов элементов матрицы, что будет получен нужный порядок прохода по матрице «змейкой». Второй (более сложный, но именно он может приго-диться в третьей работе): найти соотношение между значением элемента K и его индексами [i,j], то есть функцию вида F(K,N) = <i,j>, которая по номеру K элемента в змейке возвращает его координаты в матрице <i,j>; другими словами a[i,j]=K. При этом данная функция не должна использовать циклы – только элементарные арифметические действия и проверку различных условий! Построив такую функцию можно простым перебором значений K от 0 до N2–1 нахо-дить индексы для каждого K с помощью функции F и записывать в матрицу К по найденным индексам.
Решение задачи: «Заполнение массива "змейкой"»
textual
Листинг программы
function f(k,n:byte;var y:byte):byte;
var x:byte;
begin
x:=k div n+1;
if odd(x)then y:=k mod n+1
else y:=n-(k mod n);
f:=x;
end;
var n,k,i,j:byte;
a:array[1..10,1..10] of byte;
begin
write('n=');
readln(n);
for k:=0 to n*n-1 do
begin
i:=f(k,n,j);
a[i,j]:=k;
end;
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:3);
writeln;
end;
end.
Объяснение кода листинга программы
- Объявляются переменные:
k- типа byte (целое число от 0 до 255)n- типа bytei- типа bytej- типа bytea- двумерный массив целых чисел от 1 до 10
- Создается функция
f, которая принимает параметрыkиnи возвращает значение типа byte.- Объявляется переменная
xтипа byte - Внутри функции происходит деление
kнаnс добавлением 1, затем происходит проверка на четность полученного значенияx. В зависимости от результата проверки значениеyприсваивается либо остаток от деленияkнаn, либо значениеnминус остаток от деленияkнаn. - Возвращается значение переменной
x.
- Объявляется переменная
- В основном блоке программы пользователю предлагается ввести значение для переменной
n(размерность массива). - Происходит заполнение массива
aзначениями, чтобы он представлял собойзмейку(при котором значения увеличиваются слева направо, снизу вверх и т.д.). - После заполнения массива происходит вывод его содержимого в консоль в виде таблицы, где элементы массива разделены пробелами, и каждая строка отображается на новой строке.