|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.10.2007, 11:39 | #1 |
Пользователь
Регистрация: 15.06.2007
Сообщений: 40
|
Лототрон 6 из 49 - помогите!!!
написал лототрон, немогу понять почему неправильно работает..
чуть голова нелопнула. немогу понять почему бывает выпадает мееньше 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. |
03.10.2007, 11:52 | #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); он не попадает |
03.10.2007, 11:59 | #3 |
Пользователь
Регистрация: 15.06.2007
Сообщений: 40
|
ок. ща попробую.
|
03.10.2007, 12:01 | #4 |
Пользователь
Регистрация: 15.06.2007
Сообщений: 40
|
большое спачибо. в етом и была причина...
- причина в выводе результата а не в формировании множетсва, я искал проблемму нетам. а ведь думал в чем дело и реализовывал все виды циклов. :-) ... бывает. |