Является ли матрица латинским квадратом - Pascal

Узнай цену своей работы

Формулировка задачи:

12. латинский квадрат порядка N называется квадратная таблица размерности NхN, каждая строка и каждый столбец которой содержит все из цифр 1,2, ..., N. Данная целочисленная квадратная матрица порядка 5. Выяснить, является ли она латинским квадратом.

Решение задачи: «Является ли матрица латинским квадратом»

textual
Листинг программы
var a:array[1..20,1..20] of byte;
    m,m1,m2:set of 1..20;
    n,i,j,k:byte;
begin
write('Размер матрицы n=');
readln(n);
writeln('Заполните матрицу числами от 1 до ',n);
for i:=1 to n do
for j:=1 to n do
repeat
  write('a[',i,',',j,']=');
  readln(a[i,j]);
until a[i,j] in [1..n];
writeln('Введеная матрица');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:3);
  writeln;
 end;
m:=[1..n];
k:=0;
i:=1;
while i<=n do
 begin
  m1:=[];
  for j:=1 to n do
  m1:=m1+[a[i,j]];
  m2:=[];
  for j:=1 to n do
  m2:=m2+[a[j,i]];
  if(m1<>m)or(m2<>m) then
   begin
    k:=1;
    break;
   end
  else inc(i);
 end;
if k=0 then write('Это латинский квадрат')
else write('Это не латинский квадрат');
end.

Объяснение кода листинга программы

  1. Объявлены переменные:
    • a: массив 20x20 целых чисел (byte), для хранения значений элементов матрицы;
    • m, m1, m2: множества (set) от 1 до 20, для работы с элементами матрицы;
    • n, i, j, k: целые числа (byte), для итерации по элементам матрицы и контроля размера.
  2. Пользователю предлагается ввести размер матрицы (n).
  3. Пользователю предлагается заполнить матрицу числами от 1 до n.
  4. Введенные значения записываются в массив a с помощью двух вложенных циклов.
  5. Выводится введенная матрица в консоль с помощью трех вложенных циклов и функции write.
  6. Создаются пустые множества m1 и m2 для хранения элементов главной диагонали и побочной диагонали матрицы соответственно.
  7. Внутренний цикл (6-8) перебирает строки матрицы (i-я строка).
  8. Внешний цикл (7-8) перебирает столбцы матрицы (j-й столбец).
  9. Значение элемента матрицы a[i,j] добавляется в множество m1.
  10. Значение элемента матрицы a[j,i] добавляется в множество m2.
  11. Если m1 и m2 не равны множеству [1..n], то это означает, что матрица не является латинским квадратом, и переменная k устанавливается в 1.
  12. Если m1 и m2 равны множеству [1..n], то это означает, что матрица является латинским квадратом, и переменная k устанавливается в 0.
  13. Внутренний цикл (10-12) продолжает работу до тех пор, пока i меньше или равно n.
  14. Если k=0, то выводится сообщение Это латинский квадрат.
  15. Если k=1, то выводится сообщение Это не латинский квадрат.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.615 из 5
Похожие ответы