Использование функции 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.

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

  1. В типе TSet объявляется тип множества, который будет использоваться для обозначения чисел, которые уже были выведены, а также для обозначения чисел, которые еще необходимо вывести.
  2. В процедуре Gen рандомируется число в диапазоне от 1 до 8 и проверяется, содержится ли оно уже в переменной st. Если число уже было выведено, то генерируется новое число, пока не будет найдено уникальное. Затем сгенерированное число выводится на экран и исключается из множества st.
  3. В переменной left инициализируется начальное множество, которое содержит все числа от 1 до 8. В переменной right инициализируется копию множества left, чтобы можно было работать с обоими столбцами таблицы.
  4. Цикл while выполняется 8 раз, пока не будут рандомированы все 8 чисел.
  5. Внутри цикла вызывается процедура Gen для каждого из двух столбцов таблицы. Выводится число из левого столбца и пробел, затем число из правого столбца.
  6. После завершения цикла переменная i увеличивается на единицу.
  7. Перед началом цикла while вызывается функция Randomize, чтобы инициализировать генератор случайных чисел.
  8. После завершения цикла while выводится символ новой строки (WriteLn).

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


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

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

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