Ошибка цикла
Есть два занчения типа 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 на еденицу превышающее верный результат.
В чем проблема не знаю. Пожалуйста подскажите.
shag=int(m_hsloya/m_hrazbivki);
Так намного проще. (Недавно стал изучать С++.)
*********************************
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 - т.е. правильно.
Решу вопрос проверкой значения этого последнего элемента, должно помочь.