Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ошибка цикла

9.7K
21 ноября 2006 года
_Oleg_
43 / / 15.08.2006
Возник такой вопрос.
Есть два занчения типа float (общая толщина слоя и толщина участка на который делиться слой) надо определить сколько раз длина разбивки помещается в общей длине слоя

***************************************
if (m_hsloya<=m_hrazbivki)
{
m_koluch=1;
}
else if(m_hsloya>m_hrazbivki)
{

for(shag=0;shag*m_hrazbivki<m_hsloya;shag++)
{
}
m_koluch=shag;
}
}
***************************************
shad и m_koluch типа long

в общем все работает нормально до того момента пока точность задания m_hrazbivki не вводится с точностью до 2-х знаков после запятой (0.01), после этого цикл начитает выводить значение m_koluch на еденицу превышающее верный результат.
В чем проблема не знаю. Пожалуйста подскажите.
3.2K
21 ноября 2006 года
Sania
186 / / 28.10.2006
А зачем такие сложности?
shag=int(m_hsloya/m_hrazbivki);
9.7K
21 ноября 2006 года
_Oleg_
43 / / 15.08.2006
Спасибо!!!

Так намного проще. (Недавно стал изучать С++.)

*********************************
if((m_hrazbivki==1)||(m_hrazbivki==2))
{
shag=long(m_hsloya/m_hrazbivki);
}
else
{
shag=long(m_hsloya/m_hrazbivki)+1;
}
*********************************
(число m_hrazbivki изменяется в пределах от 0 до 2)
Т.е. данным алгоритмом определяю какое число раз m_hrazbivki "цепляет" m_hsloya.
Возникает та же проблема например при m_hsloya=1, а m_hrazbivki=0.01 колличество участко выдает 101 (!!!?). Но при дальнейшем выполнении алгоритма и заполнении массива значениями толщин участков 101-й элемент в данном случае определяется программой = 0 - т.е. правильно.

Решу вопрос проверкой значения этого последнего элемента, должно помочь.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог