Код сравнивает разницу двух чисел (общее и кандидат) и видит, меньше ли эта разница или равна 3. Как вы можете видеть в результате ниже. Некоторые числа с разницей менее 3 печатаются, а есть числа с разницей более 3, но они все еще печатаются.
if ((candidate - total) <= 3) {
cout << candidate << endl;
cout << "total - candidate = " << total - candidate << endl;
}
Он возвращает:
30
total - candidate = 12
32
total - candidate = -1
36
total - candidate = 13
40
total - candidate = 10
42
total - candidate = 12
48
total - candidate = 28
54
total - candidate = 12
Что здесь вызывает проблему?
Вы используете потоки? Это может привести к изменению значения между моментом его создания и печатью.
вы используете знаковое или беззнаковое int?
@Yksisarvinen, если candidate - total <= 3, то total - candidate не должен быть -1. Проблема не в этом
@Hearner candidate равен 32 в упомянутом вами случае. Допустим, total равен 31. candidate - total равен 1, что меньше 3. total - candidate равно -1.
ошибка id10T! (candidate-total не то же самое, что total-candidate)





Вы должны увидеть переменные, на которые вы поставили условия. Во-первых, вы проверяете условие для кандидата-итога, помещаете печать итого-кандидата. Они не равны
Вывод правильный. Ваше условие if неправильное. Так должно быть -
if ((total - candidate) <= 3) {
cout << candidate << endl;
cout << "total - candidate = " << total - candidate << endl;
}
candidate - totalне равенtotal - candidate. Также, пожалуйста, не размещайте изображения кода, скопируйте и вставьте их сюда.