
Вопрос задан 10.10.2023 в 18:00.
Предмет Информатика.
Спрашивает Малышкин Юрий.
Реализовать процедуру заполнения массива случайными числами без повторения элементов (Pascal)


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

Отвечает Тепляшин Ваня.
// 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
// Внимание! Если программа не работает, обновите версию!
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



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для реализации процедуры заполнения массива случайными числами без повторений в Pascal, вы можете воспользоваться алгоритмом "перемешивания" элементов массива. Вот пример кода:
pascalprogram 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.


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

Информатика 579

Информатика 34

Информатика 2133

Информатика 58

Информатика 55

Информатика 67

Информатика 12
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili