Establezca una variable sin usar el operador aritmético, relacional o condicional

Dados tres números enteros a, b y c, donde c puede ser 0 o 1. Sin usar ningún operador aritmético, relacional y condicional, establezca el valor de una variable x según las siguientes reglas:

If c = 0
    x = a
Else // Note c is binary
    x = b.

Ejemplos:

Input: a = 5, b = 10, c = 0;
Output: x = 5

Input: a = 5, b = 10, c = 1;
Output: x = 10

Solución 1: usar operadores aritméticos
Si se nos permite usar operadores aritméticos, podemos calcular x fácilmente usando cualquiera de las siguientes expresiones:

x = ((1 - c) * a) + (c * b)

OR

x = (a + b) - (!c * b) - (c * a);

OR

x = (a * !c) | (b * c);
#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;
}

Producción:

5

 
Solución 2: Sin usar operadores aritméticos
La idea es construir una array de tamaño 2 tal que el índice 0 de la array almacene el valor de la variable ‘a’ y el índice 1 el valor de la variable b. Ahora devolvemos el valor en el índice 0 o en el índice 1 de la array según el valor de la variable 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;
}

Producción:

10

Este artículo es una contribución de Aditya Goel . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *