Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2010, 20:54   #1
Davlet M
Пользователь
 
Регистрация: 27.08.2009
Сообщений: 34
По умолчанию Цикл в цикле...

по мере выполнения задачи возникла необходимость цикла в цикле, что в результате вызывает у меня зависание.... можно как-нибудь устранить это ??? сформировать код иначе не выходит... может какие-нибудь остановки секундные можно сделать или еще чего... среда С++ Builder 6

Последний раз редактировалось Davlet M; 24.01.2010 в 20:57.
Davlet M вне форума Ответить с цитированием
Старый 24.01.2010, 20:58   #2
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию

если зависает цикл, то не выполняется условие выхода из цикла. посмотрите значения переменных с помощью Watch в вашей IDE, если не можете найти методом пристального взгяда
Namolem вне форума Ответить с цитированием
Старый 24.01.2010, 20:58   #3
Absinth
Пользователь
 
Аватар для Absinth
 
Регистрация: 11.11.2008
Сообщений: 16
По умолчанию

Покажите сегмент кода
Не рой другому яму - пусть сам роет.
Absinth вне форума Ответить с цитированием
Старый 24.01.2010, 21:12   #4
Davlet M
Пользователь
 
Регистрация: 27.08.2009
Сообщений: 34
По умолчанию

условие должно выполняться.. просто должно выполниться громоздкое дествие перед этим...

вот франмент:

while (F1 == FALSE)
{
if ((fabs(pik-pik0)<0,1)||(fabs(pik-pik1)<0,1))
{
a1_d_vz += 0,5;
}
else F1 = TRUE;

create_d12();
achh();
read_d14();


while (fabs(freq[flag1]-f_rab)>0.25)
{
if (freq[flag1]>f_rab)
{
delta+=delta/6;
a1_d_r+=delta;
}
else if (freq[flag1]<f_rab)
{
delta-=delta/5;
a1_d_r-=delta;
}

create_d12();
achh();
read_d14();
graph_buil();
}
}

}
Davlet M вне форума Ответить с цитированием
Старый 25.01.2010, 01:10   #5
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию

0,1 это НОЛЬ. fabs(pik-pik1) никогда не будет меньше нуля
а 0.1 это одна десятая

код не разбирал, возможно в этом главная ошибка?
Namolem вне форума Ответить с цитированием
Старый 25.01.2010, 01:26   #6
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Ошибка, как правильно указал Namolen, действительно в неправильной записи дробного числа. А в Вашем коде
Код:
fabs(pik-pik0)<0,1
в дело вступает операция "запятая", которая выполняет указанные через запятую операции, и в качестве своего значения принимает результат самой правой операции, то есть в данном случае 1. Поэтому всё и зацикливается
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 25.01.2010, 01:42   #7
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию

я немного ошибся, но суть та же
Код:
if ((fabs(pik-pik0)<0,1)||(fabs(pik-pik1)<0,1))
fabs(pik-pik0)<0 это FALSE
fabs(pik-pik0)<0,1 это FALSE,1 равно 1
if ((fabs(pik-pik0)<0,1)||(fabs(pik-pik1)<0,1)) это if (1 || 1), то есть всегда истинно
Namolem вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл в цикле и циклом погоняет... Guguzjaka Помощь студентам 5 27.11.2009 18:17
Составить программу вычисления значений функций, используя приём "цикл в цикле" Chaynik011091 Помощь студентам 5 22.06.2009 21:33
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34