Заполнить массив так, чтобы в каждой строке и каждом столбце не было повторяющихся элементов - Free Pascal
Формулировка задачи:
Есть матрица NxN (N<=10). Требуется заполнить массив так, чтобы в каждой строке и каждом столбце не было повторяющихся элементов.
Вход
3
0 2 0
0 1 0
2 0 0
выход
1 2 3
3 1 2
2 3 1
Решение задачи: «Заполнить массив так, чтобы в каждой строке и каждом столбце не было повторяющихся элементов»
textual
Листинг программы
var a:array[1..10,1..10] of integer;
i,j,k,n:integer;
begin
write('n=');readln(n);
for i:=1 to n do
begin
k:=i-1;
for j:=1 to n do
begin
k:=k+1;
if k>n then k:=1;
a[i,j]:=k;
write(a[i,j]:3);
end;
writeln;
end;
end.
Объяснение кода листинга программы
- Объявлены переменные: a (массив), i, j, k, n (циклы)
- Задается значение переменной n с помощью ввода с клавиатуры
- Заполняется массив a с помощью двух вложенных циклов а) Внешний цикл (i) перебирает строки массива (от 1 до n) б) Внутренний цикл (j) перебирает столбцы массива (от 1 до n) в) Вычисляется значение k как i-1 (для удобства работы со строками массива) г) Если k больше n, то значение k устанавливается равным 1 (для обеспечения заполнения массива без повторений) д) Значение k присваивается элементу массива a[i,j] е) Значение k выводится на экран с помощью функции write(a[i,j],3) (для контроля заполнения массива)
- После завершения внутреннего цикла, выводится символ новой строки с помощью функции writeln (для разделения строк массива)
- После завершения внешнего цикла, выводится символ новой строки с помощью функции writeln (для разделения строк массива)