Я создаю функции, которые помещают шары в коробки.код, который вычисляет количество шариков, которые могут поместиться на каждой стороне коробки, приведен ниже.Предположим, что шары сочетаются друг с другом, как если бы они были кубиками.Я знаю, что это не оптимальный путь, но просто продолжайте.
проблема для меня в том, что, хотя я получаю числа, такие как 4.0000000 * 4.0000000 * 2.000000, продукт равен 31 вместо 32. что происходит ??
две дополнительные вещи, эта ошибка возникает только при достижении оптимальной длины стороны;например, длина стороны равна 12,2, толщина коробки равна 0,1, а радиус шара равен 1,5.это приводит к тому, что на эту сторону вписывается ровно 4 шара.если я не выполняю приведение как int, это работает, но если я выполняю приведение как int, я получаю вышеупомянутую ошибку (31 вместо 32).Кроме того, линия печати запускается один раз, если длина стороны оптимальна, но дважды, если это не так.Я не знаю, что это значит.
double ballsFit(double r, double l, double w, double h, double boxthick)
{
double ballsInL, ballsInW, ballsInH;
int ballsinbox;
ballsInL= (int)((l-(2*boxthick))/(r*2));
ballsInW= (int)((w-(2*boxthick))/(r*2));
ballsInH= (int)((h-(2*boxthick))/(r*2));
ballsinbox=(ballsInL*ballsInW*ballsInH);
printf("LENGTH=%f\nWidth=%f\nHight=%f\nBALLS=%d\n", ballsInL, ballsInW, ballsInH, ballsinbox);
return ballsinbox;
}