![]() |
|
|
#1
|
|||
|
|||
![]() Код:
var Form1: TForm1; R: Integer; New : array [1..15] of Integer; implementation {$R *.dfm} procedure TForm1.RList; begin Randomize; r := Random(15); if New[r] = 0 then RList // ошибка else begin ListBox1.Items.Add(IntToStr(r)); New[r] := 0; end; end; procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin for i:=1 to 15 do New[i]:=1; Edit1.Clear; for i:=1 to 15 do RList; end; Код вялый и выдает ошибку, но после нажатия "ОК" в целом получается то что нужно. Вообще задача состоит в том что есть несколько переменных в которых записаны данные и необходимо что бы эти данные считывались, но в случайном порядке и не повторялись. Возможно кто-то может посоветовать что-то более стабильное. Последний раз редактировалось Kaktuz, 30.11.2011 в 00:13. |
#2
|
||||
|
||||
![]() Сразу что бросилось в глаза:
Код:
New : array [1..15] of Integer; ... r := Random(15); if New[r] = 0 then ... Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
![]() Каково применение сего чуда?
Будь добр, весь код выложи. Или если это весь код, то я могу предложить более простой способ присвоения 15-ти элементам массива значения 0. Ну а если быть серьезным то дописывай: В var Код:
fuck: integer; Код:
if fuck = 14 then exit; Код:
if New[r] = 0 then begin inc(fuck); ... Да и вобще, какого лешего нужно было писать целую процедуру да и еще потом её саму с себя вызывать для того что бы выполнить одну строчку кода: r := Random(14); ах, да и поправь массивы - это же не серьезно совсем. Последний раз редактировалось m1sclick, 30.11.2011 в 01:42. |
#4
|
|||
|
|||
![]() Сори. Забыл пояснить одну деталь.
Код:
if New[r] = 0 then Если смотреть на код поочередно то можно заметить что в начале было записано в 15 переменных 1 Код:
for i:=1 to 15 do New[i]:=1; Если генерированное число (тоисть номер переменной) равняется 1 значит такого числа еще не было и мы его добавим в список и запишем в переменную 0 что это чило уже используется. Ну и так далее. Друго-го я как-то не смог придумать... |
#5
|
||||
|
||||
![]() Тогда так:
Код:
r := Random(15) + 1; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#6
|
|||
|
|||
![]() Цитата:
Добавил в свой код только данное действиие, тоесть + 1 и все стало нормально ![]() ![]() |
#7
|
|||
|
|||
![]() Я вобще-то понял это все, и сути это не меняет совсем. У тебя 15 элементов заполняются нолями и ты тупо продолжаешь открывать процедуры RList пока не заполниш ими всю память. Делай как говорил я или придумывай другой способ как контролировать количество открытых RList.
Во, единственное что я забыл так это обнулять переменную fuck если New[r] <> 0, то есть: Цитата:
И я до сих пор не понял как строка: Цитата:
Цитата:
Как вариант можно вызывать random на 15 и приплюсовывать 1. Последний раз редактировалось m1sclick, 30.11.2011 в 02:14. |