![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 15.06.2007
Сообщений: 40
|
![]()
написал лототрон, немогу понять почему неправильно работает..
чуть голова нелопнула. немогу понять почему бывает выпадает мееньше 6ти лотов в лотроне... :-( unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type digit= set of 0..50; TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; dig: digit; i,n,lot: Byte; st: String; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Clear; st:=''; n:=6; dig:=[]; repeat begin lot:=random(50); if lot in dig then begin n:=n+1; Memo1.Lines.Add('Повторение числа'); end else Include(dig,lot); n:=n-1; end; until n=0; for i:=1 to 50 do if i in dig then st:=st +#9 +inttostr(i); Memo1.Lines.Add(st); end; end. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 03.10.2007
Сообщений: 10
|
![]()
попробуй вместо lot:=random(50)
написать lot:=random(49)+1. random(50) - это случайные числа от 0 до 49, а 0 тебе не нужен и в цикл for i:=1 to 50 do if i in dig then st:=st +#9 +inttostr(i); он не попадает |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 15.06.2007
Сообщений: 40
|
![]()
ок. ща попробую.
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 15.06.2007
Сообщений: 40
|
![]()
большое спачибо. в етом и была причина...
- причина в выводе результата а не в формировании множетсва, я искал проблемму нетам. а ведь думал в чем дело и реализовывал все виды циклов. :-) ... бывает. |
![]() |
![]() |