Вопрос задан 10.10.2023 в 18:00. Предмет Информатика. Спрашивает Малышкин Юрий.

Реализовать процедуру заполнения массива случайными числами без повторения элементов (Pascal)

0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Тепляшин Ваня.
// PascalABC.NET 3.3, сборка 1583 от 25.11.2017
// Внимание! Если программа не работает, обновите версию!

procedure FillRandom(var P:array of integer; a,b:integer);
begin
  var (k,n):=(0,P.Length);
  repeat
      P:=ArrRandom(n,a,b);
      k+=1;
    until P.Distinct.Count=n;
  Writeln('Сделано ',k,' генераций массива')
end;

begin
  var n:=ReadInteger('n=');
  var (a,b):=ReadInteger2('Укажите интервал значений элементов:');
  if b-a+1<n then Writeln('Задание выполнить невозможно')
  else begin
    var x:=new integer[n];
    FillRandom(x,a,b);
    x.Println
    end
end.

Примеры
n= 15
Укажите интервал значений элементов: 10 30
Сделано 695 генераций массива
14 26 30 18 27 20 28 10 25 12 22 29 13 15 17

n= 15
Укажите интервал значений элементов: -50 50
Сделано 6 генераций массива
20 11 31 8 12 -47 16 -27 -21 -44 32 10 47 -36 46
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для реализации процедуры заполнения массива случайными числами без повторений в Pascal, вы можете воспользоваться алгоритмом "перемешивания" элементов массива. Вот пример кода:

pascal
program RandomFillArrayWithoutRepetition; const MAX_ARRAY_SIZE = 100; // Максимальный размер массива type IntArray = array[1..MAX_ARRAY_SIZE] of Integer; var arr: IntArray; n, i, j, temp: Integer; procedure FillArrayRandom(var arr: IntArray; n: Integer); var i, j, temp: Integer; begin Randomize; // Инициализация генератора случайных чисел for i := 1 to n do arr[i] := i; // Заполняем массив последовательными числами for i := n downto 2 do begin j := Random(i) + 1; // Генерируем случайное число от 1 до i temp := arr[i]; // Меняем элементы местами arr[i] := arr[j]; arr[j] := temp; end; end; procedure PrintArray(arr: IntArray; n: Integer); var i: Integer; begin for i := 1 to n do Write(arr[i], ' '); Writeln; end; begin n := 10; // Размер массива FillArrayRandom(arr, n); // Заполняем массив случайными числами PrintArray(arr, n); // Выводим массив на экран end.

В этом примере, процедура FillArrayRandom заполняет массив arr случайными числами от 1 до n без повторений. Алгоритм "перемешивает" элементы массива, начиная с последнего, с помощью генератора случайных чисел.

Программа создает массив размера n (в данном примере n = 10), заполняет его случайными числами и выводит результат на экран с помощью процедуры PrintArray.

Обратите внимание, что вам может потребоваться адаптировать код под вашу конкретную среду разработки Pascal.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос