Множества

Здравствуйте. У меня сейчас возникла пару вопросов. Я задал множества, рандомно его сгенерировал. Допустим я ввожу 5 элементов во множестве, но когда он генерирует его, то может вывести 6 символов, допустим 1 2 3 4 5 0, т.е почему то он иногда выводит 6 символов именно с нулём. И ещё как сделать сортировку множества, чтобы выводилось множество по возрастанию?

program lb_1;

var 
  i,n,m,c,t,j,l: integer;
  A: set of integer;
  B: set of integer;
begin
  randomize;
  A := [];
  B := [];
  writeln('Введите значение N (интервал от [6,10])');
    readln(n);
   if (n >= 6) and (n <= 10) then 
      writeln('N = ', n)
   else 
     writeln('Вы ввели не верный диапазон: [6,10]');
   writeln('Введите значение M (интервал от [4,8])');
    readln(m);
   if (m >= 4) and (m <= 8) then 
     writeln('M = ', m)
   else 
     writeln('Вы ввели не верный диапазон: [4,8]');
   if m <= n then
     writeln('Условие выполнено ', m, ' <= ', n)
   else
     writeln('Условие не выполнено (m <= n)');
   writeln('Введите количество элементов в множествах A и B');
   readln(t);
   for i := 1 to n do begin
     A := A + [random(0,n+5)];
     B := B + [random(0,n+5)];
   end;
   writeln(A);
   writeln;
   writeln(B);    
end.

Так Вы и генерите в рандоме 6 значений.
Счет происходит с элемента 0 а не 1.

Не понял, а почему иногда он генерирует 5, а иногда 6?

Что значит иногда?

иногда значит, может вывести вот так 1 2 3 4 5, а может вывести вот так 1 2 3 4 5 0

Ну тут генерируется число от 0 до n+5, так что чего б нулю не быть.
Множество состоит из уникальных значений. Если добавить по 100500 раз числа 1 и 2, то там будет только два элемента.

Тут не t должно быть?

Да, спасибо, я тупанул )

А что на счёт того, как вывести их по возрастанию т.е допустим есть множество 5 3 1 2
Нужно вывести, 1 2 3 5

Сортировкой

Для этого скорее всего надо создать массив с элементами множества.

Но хз как, так с for in в PascalABC .NET не работает.

ну, эта конструкция легко заменяется на

 for var x:=0 to <МаксимальноВозможныйЭлементМножества> do 

например,

var A: set of integer;
begin
  A := [0,4,5,2, 7];
  for var x:=0 to 100 do
    if x in A then WriteLn(x);
end. 

и, кстати, этот код выведет элементы множества в возрастающем порядке (что, вообще-то и нужно ТС) :wink:

вопрос в другом.
Я не уверен, что в данной задаче вообще множества нужны.