Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Как работают вложенные циклы ? Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пт Дек 03, 2010 9:05 am Ответить с цитатой Вернуться к началу

Ну. Все правильно. Естественно самая большая разница между мувингами будет тогда, когда их периоды различаются максимально.
Выведи K2 и K3 и увидишь 1 и 99

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Krechetov



Зарегистрирован: 05.08.2009
Сообщения: 76

СообщениеДобавлено: Пт Дек 03, 2010 5:18 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Ну. Все правильно. Естественно самая большая разница между мувингами будет тогда, когда их периоды различаются максимально.
Выведи K2 и K3 и увидишь 1 и 99


Ну это на самом деле совершенно не так. В разные моменты времени с разным D разность максимальная. Просто циклы как то криво считаются, точнее непосредственно D криво находится Smile

Я чёт как циклы в ами считаются вообще не понял вот пример:


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 Smile

Если убрать к=0 из внутреннего цикла то будет 200 как и положено.
Посмотреть профиль Отправить личное сообщение
Krechetov



Зарегистрирован: 05.08.2009
Сообщения: 76

СообщениеДобавлено: Пт Дек 03, 2010 5:20 pm Ответить с цитатой Вернуться к началу

Т.е. получается что сначала прогоняется внутренний цикл, а во внешнем всё что было ДО внутреннего например считается уже потом.... я эту логику чтот понять не могу....
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Сб Дек 04, 2010 1:06 am Ответить с цитатой Вернуться к началу

Берем код
Код:

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

СообщениеДобавлено: Сб Дек 04, 2010 4:45 pm Ответить с цитатой Вернуться к началу

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
и т.д.


Вот именно так я и думал Sad

Однако тогда K в данном случае равнялся бы 101... т.к. последний раз i прогонялся как 100.... Однако он равен 3 в амиброкере....

Т.е. как то они по другому прогоняются. поэтому в предыдущем примере не удаётся найти D при максимальной разнице...
Посмотреть профиль Отправить личное сообщение
Krechetov



Зарегистрирован: 05.08.2009
Сообщения: 76

СообщениеДобавлено: Сб Дек 04, 2010 5:52 pm Ответить с цитатой Вернуться к началу

Короче. Заменил циклы While циклами For...

Всё стало ужасно тормозить, зато считаться стало по порядку как и положено во вложенном цикле Smile

Вопрос закрыт....

Зы.. Но если кто нить скажет как сделать так чтоб не тормозило, тому отдельный респект Smile
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Дек 05, 2010 12:44 pm Ответить с цитатой Вернуться к началу

Код:

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
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen