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