Помогите с задачкой на C++!
Я не могу понять эту задачку.
Нужно написать программу, которая считывает три целых числа и проверяет, что ровно два из них — положительные. Например, если на вход подаётся 1 1 0, программа должна вывести true, а если введено 1 1 1 или 0 0 0 — то false. Попробуйте решить задачу, не применяя if.
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Вам нужно придумать функцию или выражение, которое будет давать 1 для положительных чисел и 0 для отрицательных и нуля (арифметика или битовые трюки).
Сумма результатов может быть 0, 1, 2, 3. Из них подходит только 2 - для этой суммы нужно вывести true.
int x = 1, y = -2, z = 666;
string falsetrue = "FFTF";
cout << falsetrue[((-x >> 31) & 1) + ((-y >> 31) & 1) + ((-z >> 31) & 1)];