![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Циклы... [D7, WinXP]
Knoxville © (2005-03-02 18:34:00)Ув. Мастера! Помогите! У меня такая проблема:
Вот код:
for i := 0 to 4 do
begin
j := Random(10);
k := Random(5);
if FindImg(j, k).Visible <> True then
begin
FindImg(j, k).Visible := True;
end;
end;
FindImg - это моя ф-ция, которая по 2-м цифрам находит определенный TImage.
Смысл: есть TImage, все невидимы. Цикл должен показать 5 случайных имажей, если они еще не показаны. Проблема: если случайный TImage уже показан, то цикл проходит мимо и в итоге показывает не 5, а 4 TImage или еще меньше! Можно ли как-то уменьшить число i или прокрутить цикл снова?
Спасибо всем!
Knoxville (2005-03-02 18:51:00) [1]palva:
Я знаю! Вот почему и спрашиваю.
Вобщем спасибо всем! Идеи с массивом и while очень хорошие!
Knoxville (2005-03-02 18:50:00) [2]palva:
Я знаю! Вот почему и спрашиваю.
Вобщем спасибо всем! Идеи с массивом и while очень хорошие!
DiamondShark (2005-03-02 18:49:00) [3]
> Knoxville (02.03.05 18:47) [5]
> GLFox: Что-то repeat не помогает!
Значит звёзды не сложились.
P.N.P. (2005-03-02 18:48:00) [4]>palva © (02.03.05 18:46) [4]
Где там изменение переменной? :)
Knoxville (2005-03-02 18:47:00) [5]GLFox: Что-то repeat не помогает!
palva (2005-03-02 18:46:00) [6]Внутри цикла for изменять переменную цикла запрещено.
GLFox (2005-03-02 18:41:00) [7]Используй while...do или repeat...until
DiamondShark (2005-03-02 18:40:00) [8]Пора вывесить где-нибудь выгравиранным на бронзовой доске алгоритм генерации неповторяющейся случайной последовательности:
Заполнить массив последовательными значениями;
Перетасовать массив;
Вибирать последовательно значения.
P.N.P. (2005-03-02 18:39:00) [9]i:=0;
while i<5 do
begin
j := Random(10);
k := Random(5);
if FindImg(j, k).Visible <> True then
begin
FindImg(j, k).Visible := True;
inc(i)
end;
end;