s-a-n-o писал(а):
и где в конце проги ставить вывод?
В одном цикле формируем множество Z. Выводим множество Z в другом цикле:
Код:
for i:= 1 to 100 do if i in Z then Write(i); WriteLn;
Если выводить множество нужно непременно по мере его формирования, то делаем так
Код:
for i:= 1 to 100 do if odd(i) then if i in Y then begin Z:= Z + [i]; Write(i, ' ') end;
Примечания.
A. Использовать odd совершенно не обязательно. Можно цикл формирования подмножества Z построить так
Код:
Z := [];
i := 1;
while i < 100
do begin
if i in Y then Z:= Z + [i];
i:= i+2;
end;
На мой взгляд, использование odd делает текс более читабельным. Да и знакомым преподавателям программирования использование odd нравится больше: учащийся «демонстрирует свой богатый словарный запас».
B. Если формировать множества X1, X2, X3 нужно именно случайно, то для получения множеств из 10 элементов можно поступить таким образом. Определим переменную count целого типа для «текущей» мощности формируемого множества, и будем формировать множество X при помощи
Код:
X2:= [];
Count:= 0;
while Count < 10 {До тех пор пока число элементов множества меньше 10}
do begin {делаем: }
i:= 1 + random(100); {Получаем случайное целое в диапазоне 1..100}
if not (i in X2) {Если очередное целое не содержится в множестве}
then begin {то
X2:= X2 + [i];{ добавляем его в это множество }
inc(Count) { и увеличиваем число элементов множества на 1}
end;
end;
for i:= 1 to 100 do if i in X2 then Write(i, ' ');
WriteLn;
Конечно, и в этм случае вывод элементов на экран можно выполнять одновременно с формированием множества. Предоставляю Вам, при желании, выполнить эту модификацию.