


Почему автоматически округляется результат операций? Вопрос по языку программирования С.
Даже маленькие дети знают, что если они хотят качаться на качели, так более тяжелые дети должны сесть ближе к середине. Из физики нам известно, что если детки находятся в равновесии, тогда действует закон:
F1 * r1 = F2 * r2
О существовании рычагов силы писал еще Архимед: Дайте мне точку опоры, и я переверну весь мир!.
Давайте рассмотрим возможность реализации данного эксперимента в реальных условиях. Допустим, мы имеем железную перекладину длиной в 2м. В таком случае, куда нам следует поместить ту самую точку опоры, для того чтобы поднять автомобиль только лишь весом собственного тела?
r1 + r2 = 2 => r1 = 2 – r2
m1 * r1 = m2 * r2
r2 = 2 * m1 / (m1 + m2)
Создайте функцию float lift_a_car(const int stick_length, const int human_weight, const int car_weight) с тремя параметрами:
const int stick_length - Длина перекладины
const int human_weight - Вес человека
const int car_weight - Вес авто
Функция согласно параметрам высчитает, на каком месте поместить точку опоры так, чтобы человек смог собственным весом поднять машину. Функция должна вернуть значение с точностью до 2 цифр после запятой (округлённо).
Прилагаю код программы и результат выполнения. При задании параметров 2 80 1400 возвращает 0. В чем проблема? Заранее спасибо
приведи знаменатель к типу double или float, происходит целочисленное деление
Во время return stick length умножь на 1.0. То же самое с human weight. Проблема возникает из-за того, что все операции ты осуществляешь с целочисленным типом данных, умножение на 1.0 приведёт результат к значению с плавающей точкой