Задайте переменную без использования арифметического, реляционного или условного оператора
Даны три целых числа a, b и c, где c может быть либо 0, либо 1. Без использования каких-либо арифметических, реляционных и условных операторов установите значение переменной x на основе следующих правил:
Если c = 0 х = а Иначе // Примечание c - двоичное х = б.
Примеры:
Ввод: a = 5, b = 10, c = 0; Выход: x = 5 Ввод: a = 5, b = 10, c = 1; Выход: x = 10
Рекомендуется: сначала попробуйте свой подход в {IDE}, прежде чем переходить к решению.
Решение 1. Использование арифметических операторов
Если нам разрешено использовать арифметические операторы, мы можем легко вычислить x, используя любое из следующих выражений:
х = ((1 - c) * a) + (c * b) ИЛИ х = (a + b) - (! c * b) - (c * a); ИЛИ х = (а *! с) | (до н.э);
#include <iostream> using namespace std; int calculate( int a, int b, int c) { return ((1 - c) * a) + (c * b); } int main() { int a = 5, b = 10, c = 0; int x = calculate(a, b, c); cout << x << endl; return 0; } |
Выход:
5
Решение 2: без использования арифметических операторов
Идея состоит в том, чтобы построить массив размера 2, в котором индекс 0 массива хранит значение переменной 'a' и значение индекса 1 переменной b. Теперь мы возвращаем значение по индексу 0 или по индексу 1 массива в зависимости от значения переменной c.
#include <iostream> using namespace std; int calculate( int a, int b, int c) { int arr[] = {a, b}; return *(arr + c); } int main() { int a = 5, b = 10, c = 1; int x = calculate(a, b, c); cout << x << endl; return 0; } |
Выход:
10
Эта статья предоставлена Адитьей Гоэлем . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.