Задайте переменную без использования арифметического, реляционного или условного оператора

Опубликовано: 1 Января, 2022

Даны три целых числа 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, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
C++ C