Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Почему автоматически округляется результат операций? Вопрос по языку программирования С.

Даже маленькие дети знают, что если они хотят качаться на качели, так более тяжелые дети должны сесть ближе к середине. Из физики нам известно, что если детки находятся в равновесии, тогда действует закон:

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 приведёт результат к значению с плавающей точкой