→ Для вступления в общество новичков и профессионалов программирования, пожалуйста нажмите здесь ...

Форум программистов: C++, Basic, Delphi, Pascal, JavaScript
Логин: Пароль:
Запомнить?  
@Mail.ru



Начать новую тему Ответить на тему  [ 1 сообщение ] 
как посчитать все итерации в циклах ? 
Автор Сообщение
Начинающий

Регистрация: 16.10.2011
Сообщения: 3
Языки:
Специальность:

Репутация: 0 [ ? ]
 как посчитать все итерации в циклах ?
Привет !

-Конечно, язык MQL4 отличается от C++, но в целом синтаксис и базовая часть идентичны, и

поскольку не было подходящей ветки, я запостился именно здесь.

Вопрос не простой:
есть несколько циклов - это число постоянное
один цикл вложен в другой и так далее по цепочке

для каждого из этих циклов известны:
минимальное значение,
максимальное значение,
шаг,
значение, с которого следует продолжить цикл (т.е. оно срабатывает только один раз при

старте программы с этими циклами)

i=0;
for (c4=min[4]; c4<=lev[4]; c4+=st[4]) //L4
{
for (c3=min[3]; c3<=lev[3]; c3+=st[3]) //L3
{
for (c2=min[2]; c2<=lev[2]; c2+=st[2]) //L2
{
for (c1=min[1]; c1<=lev[1]; c1+=st[1]) i++; //L1
}
}
}

- чему будет равняться переменная i, если при старте первый раз каждый цикл будет начинаться

не с начала, а с некоторого значения, входящего в диапазон работы цикла

вот кусок рабочего кода (переменные с префиксом _con 0 -это указатель начала работы цикла

только первый раз!):


* * * начало фрагмента кода * * *
i=0;
Print (""); Print (" * * * THE START OF TRACE * * *"); Print ("");
if (AUTOCALC==1 && time_point<1) Print ("Ждите значения времени проведения тестирования

для одной точки входа в тренд...");
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^ НАЧАЛО ПЕРЕБОРА ЗНАЧЕНИЙ

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
for (TRADE_LAG=TRADE_LAG_MIN; TRADE_LAG<=TRADE_LAG_MAX; TRADE_LAG+=TRADE_LAG_STEP) {if

(TRADE_LAG_con>TRADE_LAG_MIN) {TRADE_LAG=TRADE_LAG_con; TRADE_LAG_con=-2000;}
for (SILENCE_TCK=SILENCE_TCK_MIN; SILENCE_TCK<=SILENCE_TCK_MAX;

SILENCE_TCK+=SILENCE_TCK_STEP) {if (SILENCE_TCK_con>SILENCE_TCK_MIN)

{SILENCE_TCK=SILENCE_TCK_con; SILENCE_TCK_con=-2000;}
for (BASE_METRIC_LENGTH=BASE_METRIC_LENGTH_MIN;

BASE_METRIC_LENGTH<=BASE_METRIC_LENGTH_MAX; BASE_METRIC_LENGTH+=BASE_METRIC_LENGTH_STEP) {if

(BASE_METRIC_LENGTH_con>BASE_METRIC_LENGTH_MIN) {BASE_METRIC_LENGTH=BASE_METRIC_LENGTH_con;

BASE_METRIC_LENGTH_con=-2000;}
if (TRADE_LAG==2 && BASE_METRIC_LENGTH>SILENCE_TCK) {OLD_BML=BASE_METRIC_LENGTH;

BASE_METRIC_LENGTH=SILENCE_TCK;} else OLD_BML=-1;

for (UMDC_USE=UMDC_USE_MIN; UMDC_USE<=UMDC_USE_MAX; UMDC_USE++) {if

(UMDC_USE_con>UMDC_USE_MIN) {UMDC_USE=UMDC_USE_con; UMDC_USE_con=-2000;}
for (USE_FM=USE_FM_MIN; USE_FM<=USE_FM_MAX; USE_FM++) {if (USE_FM_con>USE_FM_MIN)

{USE_FM=USE_FM_con; USE_FM_con=-2000;} if (USE_FM==1)

{WALL_INACCURACY_MAX0=WALL_INACCURACY_MAX;

MINIMAL_PROFIT_METRIC_PIPS_MAX0=MINIMAL_PROFIT_METRIC_PIPS_MAX;

METRIC_INACCURACY_MAX0=METRIC_INACCURACY_MAX;} else

{WALL_INACCURACY_MAX0=WALL_INACCURACY_MIN;

MINIMAL_PROFIT_METRIC_PIPS_MAX0=MINIMAL_PROFIT_METRIC_PIPS_MIN;

METRIC_INACCURACY_MAX0=METRIC_INACCURACY_MIN;}

i++;

}}}}}}
* * * конец фрагмента кода * * *

- если учесть, что преднамеренного первого сдвига значений в цикле не происходит, то

высчитать общее конечное число итераций для самого нижнего из циклов могу и я

а вот, как сделать, чтобы можно было подсчитать с точностью до +/- 1 цикла всё это, учитывая

возможный первый неправильный старт каждого из циклов ?

другими словами - чему рвно "i" (этот ответ нужно дать не проводя поцикловой подсчёт как

вывидите выше, т.к. это долго)


16.10.2011 2:01
Профиль Отправить email
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 


Кто сейчас на конференции

Зарегистрированные пользователи: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
© 2013 «Форум программистов Украины»