Предмет: Информатика, автор: 1DeNcHiK1

Тема: множества.
Через программу паскаль

Требуется сформировать последовательность натуральных чисел от 1 до n, расположенных в случайном порядке без повторения значений.


1DeNcHiK1: var n,i:integer;
begin
writeln('n=');
readln(n);
for i:=1 to n do
writeln(i);
end.
1DeNcHiK1: Не могу сделать так, чтобы они распологались в случайном порядке

Ответы

Автор ответа: srzontmp
1

var b: set of integer;

   n,k,m: integer;  

begin

 randomize;

 write('n = '); readln(n);

 k:=0;

 while k<n do

 begin

   m:=random(1,n);

   if not (m in b) then

   begin

     write(m,' ');

     b:=b+[m];

     k:=k+1;

   end;

 end;

end.  



1DeNcHiK1: В паскале abc не запускается, пишет что в 3 строке неожиданный символ ' '
1DeNcHiK1: Вот так программа работает:
var n,i,k,m:integer;
b: set of integer;
begin
write('n = '); readln(n);
k:=0;
while kbegin
m:=random(1,n);
if not (m in b) then
begin
write(m,' ');
b:=b+[m];
k:=k+1;
end;
end;
end.
srzontmp: while kbegin? Так работает? Неожиданный символ ' ' - это уже проблемы сайта.
1DeNcHiK1: Ну да, ты можешь объяснить, что за что отвечает
srzontmp: А что тут объяснять? Генерируете датчиком случайных чисел random(1,n) случайное число в интервале [1,n] , проверяете, входит ли это число в множество b, если не входит, то добавляете его в множество и выводите на экран, продолжаете до тех пор, пока в множестве не будет n элементов, т.к. датчик случайных чисел генерирует случайные числа, то и последовательность будет в случайном порядке, а так как в множество не добавл. элем., которые уже , то все элем. последоват. будут различными.
Похожие вопросы