Автор |
Сообщение |
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну. Все правильно. Естественно самая большая разница между мувингами будет тогда, когда их периоды различаются максимально.
Выведи K2 и K3 и увидишь 1 и 99 |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Krechetov
Зарегистрирован: 05.08.2009
Сообщения: 76
|
000 писал(а): |
Ну. Все правильно. Естественно самая большая разница между мувингами будет тогда, когда их периоды различаются максимально.
Выведи K2 и K3 и увидишь 1 и 99 |
Ну это на самом деле совершенно не так. В разные моменты времени с разным D разность максимальная. Просто циклы как то криво считаются, точнее непосредственно D криво находится
Я чёт как циклы в ами считаются вообще не понял вот пример:
D = 1;
t = 1;
K = 0;
K1 = 0;
K2 = 0;
K3 = 0;
for( i = 1; i<101;i++)
{
while(t < 101)
{
k=0;
K = i+k+1;
k1=k;
t++; }
}
Plot(K, "", colorRed);
К здесь будет равным 2.... Хотя должен быть равен 101
Если убрать к=0 из внутреннего цикла то будет 200 как и положено. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Krechetov
Зарегистрирован: 05.08.2009
Сообщения: 76
|
Т.е. получается что сначала прогоняется внутренний цикл, а во внешнем всё что было ДО внутреннего например считается уже потом.... я эту логику чтот понять не могу.... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Берем код
Код: |
for( i = 1; i<101;i++)
{
while(t < 101)
{
k=0;
K = i+k+1;
k1=k;
t++; }
}
|
Сначала i = 1
и прогоняется весь цикл while.
Затем i = 2 и прогоняется весь цикл while
и т.д. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Krechetov
Зарегистрирован: 05.08.2009
Сообщения: 76
|
000 писал(а): |
Берем код
Код: |
for( i = 1; i<101;i++)
{
while(t < 101)
{
k=0;
K = i+k+1;
k1=k;
t++; }
}
|
Сначала i = 1
и прогоняется весь цикл while.
Затем i = 2 и прогоняется весь цикл while
и т.д. |
Вот именно так я и думал
Однако тогда K в данном случае равнялся бы 101... т.к. последний раз i прогонялся как 100.... Однако он равен 3 в амиброкере....
Т.е. как то они по другому прогоняются. поэтому в предыдущем примере не удаётся найти D при максимальной разнице... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Krechetov
Зарегистрирован: 05.08.2009
Сообщения: 76
|
Короче. Заменил циклы While циклами For...
Всё стало ужасно тормозить, зато считаться стало по порядку как и положено во вложенном цикле
Вопрос закрыт....
Зы.. Но если кто нить скажет как сделать так чтоб не тормозило, тому отдельный респект |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
t = 0;
for( i = 1; i<101;i++)
{
while(t < 101)
{
k=0;
K = i+k+1;
k1=k;
t++;
}
}
|
Тут как раз все понятно.
i = 1 Далее идем в цикл while. Прогоняется до t = 100. При этом t становится равно 101. Далее идем обратно в цикл for. Теперь i = 2. Идем в цикл while а там t уже 101. Потому, что t никто не обнулил. Соответственно цикл while не выполняется... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|