Вопрос:
Ваша задача:
Напишите функцию, которая выводит на стандартный вывод (stdout) количество пользователей, которые не покидали сайт через 10 секунд (т.е. Число пользователей, которые не отскакивали).
Пожалуйста, округлите результат вниз до ближайшего целого числа (например, как
7.1
и7.9
округлены до7
).Обратите внимание, что ваша функция получит следующие аргументы:
n
который является целым числом, представляющим число посетителей
b
который представляет собой целое число, представляющее показатель отказов (т.е. процент пользователей, покинувших сайт за первые 10 секунд)
Мой код компилируется просто отлично, и я уверен, что моя логика верна, но мой результат неправильный, и я не знаю почему. Когда n = 1000
и b = 25
тогда мой результат должен быть 750
. Я продолжаю получать 1000
. Где я иду не так?
Я также не совсем уверен, как "закруглить" то, что они хотят от меня. Может ли это быть причиной, по которой я не получаю правильный результат?
МОЙ КОД:
void compute_active_users(int n, int b) {
int BounceConvert = (b / 100); //converts the value of b to a decimal
int BounceRate = (n * BounceConvert); // multiplys n times the b decimal
int TotalVisitors = (n - BounceRate); // subtract BounceRate
printf("%d", TotalVisitors); // print out the final result
}
Это использует усечение поведения целочисленного деления в C для целых положительных чисел, что является целью вашего упражнения:
void compute_active_users(int nbPeople, int bounceRate) {
int totalVisitors = nbPeople * (100 - bounceRate) / 100;
printf("%d\n", totalVisitors);
}
Ваше решение не работает, потому что эта строка:
int BounceConvert = (b / 100);
будет производить BounceConvert=0
(25/100 → 0)
Рассмотрим b/100
. В делении Integer, когда b = 25, оно сводится к 0, а не 0.25, как вы ожидаете. Для этого используйте операцию с плавающей запятой.
void compute_active_users(int n, int b) {
float BounceRate = ((float)n * b)/100; // floating point operation
int roundedBounceRate = (int) BounceRate; //Integer cast rounds it lowest integer
int TotalVisitors = (n - roundedBounceRate); // subtract BounceRate
printf("%d", TotalVisitors); // print out the final result
}