Заполнить массив случайными числами без повторений - PascalABC.NET

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

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

Написал процедуру для заполнения массива случайными числами без повторений. Алгоритм, вероятно, далеко не самый оптимальный, но тем не менее, рабочий. В теле программы работает, а, вот, в процедуре, ниочинь: "PABCSystem.pas(1961) : Ошибка времени выполнения: Значение было недопустимо малым или недопустимо большим для Int32."

Решение задачи: «Заполнить массив случайными числами без повторений»

textual
Листинг программы
Procedure FillByRandomNumbersWithoutRepeats(Var a: Array of Int64; b, c: Int64);
Var
  i, j: Int64;
  nums := [b..c];
Begin
(*  SetLength(a, Abs(c - b) + 1);
    For i := Low(a) to High(a) do
      Begin
          While not (j in nums) do j := Random(b, c);
        a[i] := j;
        Exclude(nums, j);
      End;*)
End;

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

  1. В этой процедуре заполняется массив случайными числами без повторений.
  2. Передаются три аргумента: — a — массив, который необходимо заполнить; — b — минимальное значение для генерации случайных чисел; — c — максимальное значение для генерации случайных чисел.
  3. Создается три переменные: — i — индекс элемента массива; — j — временная переменная для хранения сгенерированного числа; — nums — список чисел, которые уже были сгенерированы.
  4. Устанавливается длина массива a равной разности c и b + 1.
  5. В цикле по всем индексам массива a выполняются следующие действия: — В цикле до тех пор, пока не будет найдено случайное число, которое еще не было добавлено в массив a. — Сгенерированное случайное число добавляется в массив a. — Из списка nums исключается сгенерированное число.
  6. В конце процедуры массив a будет заполнен случайными числами без повторений.

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


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

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

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