Это не то, как работает сравнение в C ++.
Этот код
if (0 <= difference < 45) {
сначала сравнивает, меньше ли 0 или равно difference
. Затем оно "заменяется" логическим значением true или false. Затем значение типа bool (то есть 1 или 0) сравнивается с 45. И оно всегда будет меньше 45. У вас всегда есть истинное утверждение.
Таким образом, вы бы написали это, если оператор
if (difference >= 0 && difference < 45){
Обратите внимание, что из-за вашего оператора else if он не будет выполняться, если разница> 44 и <51 </p>