Построить латинский квадрат используя циклический сдвиг - Turbo Pascal

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

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

Написать программу для решения следующей задачи. построить латинский квадрат,используя циклический сдвиг. Латинский квадрат-матрица размером N x N, элементы которой равны 1,2..N и каждое число встречается только один раз в каждой строке и каждом столбце. Это нужно через объекты делать) Заранее огромное человеческое спасибо!!!))

Решение задачи: «Построить латинский квадрат используя циклический сдвиг»

textual
Листинг программы
uses crt;
const nmax=15;
type mas=array[1..nmax] of byte;
     mtr=array[1..nmax] of mas;
     lkv=object
         a:mtr;
         b:mas;
         n:byte;
         procedure razm;
         procedure sdvig;
         procedure lat_kvd;
         end;
procedure lkv.razm;
begin
repeat
write('Размер квадрата от 2 до ',nmax,' n=');
readln(n);
until n in [2..nmax];
end;
procedure lkv.sdvig;
var j,x:byte;
begin
x:=b[n];
for j:=n downto 2 do
b[j]:=b[j-1];
b[1]:=x;
end;
procedure lkv.lat_kvd;
var i,j:byte;
begin
for j:=1 to n do
 begin
  a[1,j]:=j;
  b[j]:=j;
 end;
for i:=2 to n do
 begin
  sdvig;
  for j:=1 to n do
  a[i,j]:=b[j];
 end;
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:4);
  writeln;
 end;
end;
var a:lkv;
begin
clrscr;
a.razm;
a.lat_kvd;
readln
end.

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

  1. В начале кода подключается библиотека crt, которая обеспечивает функции для работы с консолью.
  2. Затем определяются константы и типы данных, включая максимальное значение nmax для использования в циклах.
  3. Определяется тип массива mas, который представляет собой массив байтов. Также определяется массив mtr, который содержит массивы типа mas.
  4. Создается объект lkv, который имеет три свойства: a (массив mtr), b (массив mas) и n (байт).
  5. В методе razm происходит чтение размера квадрата от пользователя. Метод повторяет этот процесс до тех пор, пока введенный размер не будет находиться в диапазоне от 2 до nmax.
  6. В методе sdvig происходит циклический сдвиг массива mtr. Для этого используется цикл for, который перебирает все элементы массива от n до 2. При каждом проходе цикла значение элемента сдвигается на один элемент влево. Затем значение элемента с индексом 1 заменяется на значение переменной x.
  7. В методе lat_kvd происходит создание латинского квадрата. Для этого используется цикл for, который перебирает все элементы массива a от 1 до n. На каждой итерации цикла значение элемента a[i,j] заменяется на значение элемента b[j].
  8. После завершения всех методов, программа завершается.
  9. В основной части программы создается экземпляр объекта lkv.
  10. Затем вызываются методы razm и lat_kvd.
  11. После завершения всех вызовов методов, программа завершается.

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


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

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

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