| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Вложенные циклы |
| Автор: r_t 3.12.2004, 11:29 |
| Доброго времени суток. Подскажите, как сделать так, чтоб при одном запуске программы кол-во вложенных циклов в функции, к примеру было 3, а в следующий раз - 5? Т.е. кол-во вложенных циклов - величина переменная. Код не нужен, нужен алгоритм. |
| Автор: ~FoX~ 3.12.2004, 11:49 |
| r_t Если количество циклов конечно, то придется процедура писать отлельно для каждого количества циклов. Или пиши самомодифицырующийся код. |
| Автор: r_t 3.12.2004, 12:00 |
| А если сохранять значения переменных в массиве? Меньше 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 3.12.2004, 12:03 |
| А рекурсию использовать? |
| Автор: r_t 3.12.2004, 12:04 |
| Или, если кто знает, подскажите вариант с рекурсивной функцией. |
| Автор: maxim1000 3.12.2004, 12:08 |
| можно сделать свой счетчик - объект, который имеет функцию увеличения и функцию проверки окончательного условия, в полях этого объекта будет массив из стольки счетчиков, сколько нужно (динамический), при увеличении сложного счетчика будет увеличиваться младший счетчик, если он дошел до конца - перевод на начало и увеличение следующего, и т.д. цикл в этом случае будет один, но по сложному счетчику (с помощью while) |
| Автор: r_t 3.12.2004, 12:29 |
| maxim1000 Звучит сложновато, но попробую. Dimich А нельзя ли немного разъяснить, что должно быть в теле этой функции, что передавать в качестве параметров? |
| Автор: BSV_Sergey 3.12.2004, 12:56 | ||
Я не знаю что планируется сделать в конечном цикле, но если предположить, что в каждом из циклов I изменяется от 0 до заданного числа то алгоритм может выглядеть примерно так:
iResult – глобальная переменная. iNom – количество циклов iLength - Длина цикла Если в последнем цикле нужно знать текущее значения i в каждом из предшествующих циклов то алгоритм нужно будет усложноть. Но идея думаю понятна |
| Автор: r_t 3.12.2004, 13:14 |
| BSV_Sergey Спасибо, немедля попробую реализовать. |
| Автор: BSV_Sergey 3.12.2004, 14:37 |
| Всегда рад помоч. |
| Автор: SlaUr 6.12.2004, 09:59 |
| По моему проблемма надуманная и ее можно решить по другому. Подробнее напишите что нужно. |
| Автор: Bes 11.12.2004, 13:49 |
| По-моему вариант с рекурсией самый оптимальный, ты лучше подумай, как ты будешь определять который раз у тебя прога запустилась. :-) А вообще для каких целей, если не скрет конечно.... :-) |