%
- оператор модуля для целочисленных значений. Ваши конечные точки диапазона являются переменными с плавающей точкой. В своем упражнении вы должны преобразовать конечные точки computerNumber
и guess
в int
переменные.
int rangeLow, rangeHigh, computerNumber, guess;
Затем взгляните на генератор чисел компьютера и вставьте некоторые значения, чтобы проверить его:
computerNumber = rand() % (rangeLow - rangeHigh + 1) + 10;
rand() % ( 5 - 20 + 1) + 10;
rand() % -14 + 10;
Итак, у вас будет rand() % -14 + 10
. Это не выглядит правильно. Поменяйте местами конечные точки диапазона:
computerNumber = rand() % (rangeHigh - rangeLow + 1) + 10;
rand() % ( 20 - 5 + 1) + 10;
rand() % 16 + 10;
Это, rand() % 16 + 10
, лучше, но, очевидно, создаст число в диапазоне [10, 10+16)
или поместит его по-другому (как закрытый интервал), [10, 25]
. Если вы замените +10
на +rangeLow
следующим образом:
computerNumber = rand() % (rangeHigh - rangeLow + 1) + rangeLow;
Теперь вы получите такой диапазон:
[rangeLow, rangeLow + rangeHigh - rangeLow + 1) =>
[rangeLow, rangeHigh + 1) (left-closed interval) =>
[rangeLow, rangeHigh] (closed interval)
Что означает [5, 20]
с примерами значений, которые я использовал.
Теперь взгляните на <<a href="https://en.cppreference.com/w/cpp/header/random" rel="nofollow noreferrer"> random >. Эта часть стандартной библиотеки содержит классы и функции, упрощающие все это: