Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вложенные циклы, Кол-во вложенных циклов 
:(
    Опции темы
r_t
Дата 3.12.2004, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 3.12.2004
Где: Питер

Репутация: нет
Всего: нет



Доброго времени суток.

Подскажите, как сделать так, чтоб при одном запуске программы кол-во вложенных циклов в функции, к примеру было 3, а в следующий раз - 5? Т.е. кол-во вложенных циклов - величина переменная.
Код не нужен, нужен алгоритм.
PM MAIL ICQ   Вверх
~FoX~
Дата 3.12.2004, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



r_t
Если количество циклов конечно, то придется процедура писать отлельно для каждого количества циклов. Или пиши самомодифицырующийся код.


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
r_t
Дата 3.12.2004, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 ...

В переменную <а> подставлять разные значения из массива и тем самым будет выполняться новый цикл.
По такой схеме это реально реализовать?
PM MAIL ICQ   Вверх
Dimich
Дата 3.12.2004, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 25.8.2004
Где: Брянск

Репутация: 1
Всего: 7



А рекурсию использовать?
--------------------
Не работает - исправь, работает - не трогай!!!
PM MAIL ICQ Jabber   Вверх
r_t
Дата 3.12.2004, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 3.12.2004
Где: Питер

Репутация: нет
Всего: нет



Или, если кто знает, подскажите вариант с рекурсивной функцией.
PM MAIL ICQ   Вверх
maxim1000
Дата 3.12.2004, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 4
Всего: 110



можно сделать свой счетчик - объект, который имеет функцию увеличения и функцию проверки окончательного условия, в полях этого объекта будет массив из стольки счетчиков, сколько нужно (динамический), при увеличении сложного счетчика будет увеличиваться младший счетчик, если он дошел до конца - перевод на начало и увеличение следующего, и т.д.
цикл в этом случае будет один, но по сложному счетчику (с помощью while)


--------------------
qqq
PM WWW   Вверх
r_t
Дата 3.12.2004, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 3.12.2004
Где: Питер

Репутация: нет
Всего: нет



maxim1000
Звучит сложновато, но попробую.


Dimich
А нельзя ли немного разъяснить, что должно быть в теле этой функции, что передавать в качестве параметров?
PM MAIL ICQ   Вверх
BSV_Sergey
Дата 3.12.2004, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 19.11.2004
Где: г. Москва

Репутация: нет
Всего: 3



Я не знаю что планируется сделать в конечном цикле, но если предположить, что в каждом из циклов I изменяется от 0 до заданного числа то алгоритм может выглядеть примерно так:
Код

Function Cycle (iNom:Integer; iLength:integer):Integer;
Var i:integer;
  Begin
     iNom := iNom – 1;
     if iNom >= 0 then
        For i:=0 to iLength do
            If iNom > 0 then
                Cycle(iNom,iLength)
            Else
                Form1.iResult := Form1.iResult +1;
  End;
Пример вызова
Cycle(2,2);


iResult – глобальная переменная.
iNom – количество циклов
iLength - Длина цикла
Если в последнем цикле нужно знать текущее значения i в каждом из предшествующих циклов то алгоритм нужно будет усложноть. Но идея думаю понятна

Это сообщение отредактировал(а) BSV_Sergey - 3.12.2004, 13:11
PM MAIL   Вверх
r_t
Дата 3.12.2004, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 3.12.2004
Где: Питер

Репутация: нет
Всего: нет



BSV_Sergey

Спасибо, немедля попробую реализовать.
PM MAIL ICQ   Вверх
BSV_Sergey
Дата 3.12.2004, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 19.11.2004
Где: г. Москва

Репутация: нет
Всего: 3



Всегда рад помоч. smile
PM MAIL   Вверх
SlaUr
Дата 6.12.2004, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 18.9.2003

Репутация: 3
Всего: 5



По моему проблемма надуманная и ее можно решить по другому.
Подробнее напишите что нужно.
PM MAIL   Вверх
Bes
Дата 11.12.2004, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7



По-моему вариант с рекурсией самый оптимальный, ты лучше подумай, как ты будешь определять который раз у тебя прога запустилась. :-) А вообще для каких целей, если не скрет конечно.... :-)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0657 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.