Использование функции Exclude - Turbo Pascal
Формулировка задачи:
Вывести два столбика рандомных чисел от 1 до 8 без повторяющихся чисел.
Чтобы числа не повторялись, нужно использовать процедуру Exclude.
Вроде простенькая программа, могу написать ее без процедуры. Но с этой процедурой никогда не работала и даже не представляю, как она функционирует и как ее применить к данной задаче..
Решение задачи: «Использование функции Exclude»
textual
Листинг программы
type TSet = Set Of 1..8; //объявляем свой тип множества, используется для обозначения, что какое-то там число ещё необходимо вывести. к примеру, (TSet)t = [1, 5, 7, 8] - это означает, что уже были выведены числа 2, 3, 4 и 6, но ещё необходимо вырандомить 1, 5, 7 и 8 procedure Gen(var st: TSet); //процедура, которая рандомит необходимное число var temp: Byte; begin repeat temp := Random(8) + 1; //рандомим число until (temp in st); //пока не получим Write(temp); //выводим оное Exclude(st, temp); //исключаем его из множества end; var left, right: TSet; i: Byte; begin left := [1..8]; right := left; //пока ни одно число не выведено i := 0; Randomize(); while (i < 8) do //рандомим 8 чисел begin Gen(left); Write(' '); //левый столбец Gen(right); WriteLn; //правый столбец Inc(i); end; end.
Объяснение кода листинга программы
- В типе
TSet
объявляется тип множества, который будет использоваться для обозначения чисел, которые уже были выведены, а также для обозначения чисел, которые еще необходимо вывести. - В процедуре
Gen
рандомируется число в диапазоне от 1 до 8 и проверяется, содержится ли оно уже в переменнойst
. Если число уже было выведено, то генерируется новое число, пока не будет найдено уникальное. Затем сгенерированное число выводится на экран и исключается из множестваst
. - В переменной
left
инициализируется начальное множество, которое содержит все числа от 1 до 8. В переменнойright
инициализируется копию множестваleft
, чтобы можно было работать с обоими столбцами таблицы. - Цикл
while
выполняется 8 раз, пока не будут рандомированы все 8 чисел. - Внутри цикла вызывается процедура
Gen
для каждого из двух столбцов таблицы. Выводится число из левого столбца и пробел, затем число из правого столбца. - После завершения цикла переменная
i
увеличивается на единицу. - Перед началом цикла
while
вызывается функцияRandomize
, чтобы инициализировать генератор случайных чисел. - После завершения цикла
while
выводится символ новой строки (WriteLn
).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д