Построить латинский квадрат используя циклический сдвиг - 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.
- После завершения всех вызовов методов, программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д