Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Циклы... [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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо