Проблема с функцией вывода C ++

0

У меня возникают проблемы с выходом этой программы. Он имитирует пьяного матроса на доске, который случайным образом идет на один шаг влево или вправо. В конце симуляции программа выводит процент от того, как он упал с доски, а не падает. Мой процент всегда равен нулю, и я не могу понять, что не так с моим кодом.

Эта функция правильно выводит переменную "эксперименты" и "fallCount", но всегда показывает "fallCount/experimental" как ноль.

Это должно гласить: "После 2 экспериментов матрос упал 1 раз, процент падения составил 0,5%" (если эксперименты = 2 и fallCount = 1), то его 0% каждый раз.

Позвольте мне знать, что я делаю неправильно. Спасибо!

void  outputExperimentStats(int experiments, int fallCount)
{
cout << "After " << experiments << " experiments, sailor fell "
<< fallCount << " time, fall percentage was " << fallCount / experiments << "%\n";
}
Теги:
printing
function
variables
output

1 ответ

1
Лучший ответ

Это потому, что вы используете целочисленное деление. Нет десятичных знаков, поэтому вещи усекаются. Например

1 / 2 --> 0  // integer division

Это правильное и ожидаемое поведение.

Чтобы получить нужное поведение, используйте double или float.

1.0 / 2.0 --> 0.5  // double division

В вашем примере вы можете либо изменить типы своих входов double либо если вы хотите сохранить их int, вы можете конвертировать их во время разделения

static_cast<double>(fallCount) / static_cast<double>(experiments)
  • 0
    Спасибо вам большое! Работает отлично.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню