resident писал(а):Под отладкой все ок.
Но не это самое странное, а то что Лазарус не выводит эти пусть и одинаковые значения, вобще, никак. Как будто и нет цикла с write вовсе.
эти значения будут выводится только, если "y in sn2". А этот самый y уже убрался при первой проходе цикла.
Т.к. randomize() сбрасывает randseed в одно и тоже значение каждый раз в цикле, то и random возвращает одинаковые значения для "y"
убедится на практике совсем не сложно:
- Код: Выделить всё
var
sn1,sn2:set of 1..50; x,y:byte;
begin
x:=0;
sn1:=[1..50]; sn2:=sn1;
for x:=1 to 20 do begin
randomize;
y:=random(50);
writeln('y= ',y,' ');
if [y]<=sn2 then write(y:4);
writeln;
sn2:=sn1-[y];
end;
readln
end.
В пошаговом режиме, из-за randomize() генерирует разные числа, потому что проходит достаточное количество времени между итерациями цикла.
тут нужно заметить что
- Код: Выделить всё
y:=random(50);
имеет смысл поменять на
- Код: Выделить всё
y:=random(50)+1;
всё-таки наборы sn1 и sn2 от 1 до 50, а не от 0 до 49.