![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| r_t |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.12.2004 Где: Питер Репутация: нет Всего: нет |
Доброго времени суток.
Подскажите, как сделать так, чтоб при одном запуске программы кол-во вложенных циклов в функции, к примеру было 3, а в следующий раз - 5? Т.е. кол-во вложенных циклов - величина переменная. Код не нужен, нужен алгоритм. |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
r_t
Если количество циклов конечно, то придется процедура писать отлельно для каждого количества циклов. Или пиши самомодифицырующийся код. |
|||
|
||||
| r_t |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.12.2004 Где: Питер Репутация: нет Всего: нет |
А если сохранять значения переменных в массиве? Меньше 3 циклов не будет, будет только больше.
Т.е. for i:=0 to n do for i2:=0 to n2 do for i3:=0 to n3 do if <Кол-во циклов> >3 then for a:=<Значение из массива> to an do ... В переменную <а> подставлять разные значения из массива и тем самым будет выполняться новый цикл. По такой схеме это реально реализовать? |
|||
|
||||
| Dimich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 25.8.2004 Где: Брянск Репутация: 1 Всего: 7 |
А рекурсию использовать?
--------------------
Не работает - исправь, работает - не трогай!!! |
|||
|
||||
| r_t |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.12.2004 Где: Питер Репутация: нет Всего: нет |
Или, если кто знает, подскажите вариант с рекурсивной функцией.
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
можно сделать свой счетчик - объект, который имеет функцию увеличения и функцию проверки окончательного условия, в полях этого объекта будет массив из стольки счетчиков, сколько нужно (динамический), при увеличении сложного счетчика будет увеличиваться младший счетчик, если он дошел до конца - перевод на начало и увеличение следующего, и т.д.
цикл в этом случае будет один, но по сложному счетчику (с помощью while) -------------------- qqq |
|||
|
||||
| r_t |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.12.2004 Где: Питер Репутация: нет Всего: нет |
maxim1000
Звучит сложновато, но попробую. Dimich А нельзя ли немного разъяснить, что должно быть в теле этой функции, что передавать в качестве параметров? |
|||
|
||||
| BSV_Sergey |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 19.11.2004 Где: г. Москва Репутация: нет Всего: 3 |
Я не знаю что планируется сделать в конечном цикле, но если предположить, что в каждом из циклов I изменяется от 0 до заданного числа то алгоритм может выглядеть примерно так:
iResult – глобальная переменная. iNom – количество циклов iLength - Длина цикла Если в последнем цикле нужно знать текущее значения i в каждом из предшествующих циклов то алгоритм нужно будет усложноть. Но идея думаю понятна Это сообщение отредактировал(а) BSV_Sergey - 3.12.2004, 13:11 |
|||
|
||||
| r_t |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.12.2004 Где: Питер Репутация: нет Всего: нет |
BSV_Sergey
Спасибо, немедля попробую реализовать. |
|||
|
||||
| BSV_Sergey |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 19.11.2004 Где: г. Москва Репутация: нет Всего: 3 |
Всегда рад помоч.
|
|||
|
||||
| SlaUr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 18.9.2003 Репутация: 3 Всего: 5 |
По моему проблемма надуманная и ее можно решить по другому.
Подробнее напишите что нужно. |
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 5 Всего: 7 |
По-моему вариант с рекурсией самый оптимальный, ты лучше подумай, как ты будешь определять который раз у тебя прога запустилась. :-) А вообще для каких целей, если не скрет конечно.... :-)
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |