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

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

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

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

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

textual
Листинг программы
  1. uses crt;
  2. const nmax=15;
  3. type mas=array[1..nmax] of byte;
  4.      mtr=array[1..nmax] of mas;
  5.      lkv=object
  6.          a:mtr;
  7.          b:mas;
  8.          n:byte;
  9.          procedure razm;
  10.          procedure sdvig;
  11.          procedure lat_kvd;
  12.          end;
  13. procedure lkv.razm;
  14. begin
  15. repeat
  16. write('Размер квадрата от 2 до ',nmax,' n=');
  17. readln(n);
  18. until n in [2..nmax];
  19. end;
  20. procedure lkv.sdvig;
  21. var j,x:byte;
  22. begin
  23. x:=b[n];
  24. for j:=n downto 2 do
  25. b[j]:=b[j-1];
  26. b[1]:=x;
  27. end;
  28. procedure lkv.lat_kvd;
  29. var i,j:byte;
  30. begin
  31. for j:=1 to n do
  32.  begin
  33.   a[1,j]:=j;
  34.   b[j]:=j;
  35.  end;
  36. for i:=2 to n do
  37.  begin
  38.   sdvig;
  39.   for j:=1 to n do
  40.   a[i,j]:=b[j];
  41.  end;
  42. for i:=1 to n do
  43.  begin
  44.   for j:=1 to n do
  45.   write(a[i,j]:4);
  46.   writeln;
  47.  end;
  48. end;
  49. var a:lkv;
  50. begin
  51. clrscr;
  52. a.razm;
  53. a.lat_kvd;
  54. readln
  55. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы