Máximo de cuatro números sin usar operador condicional o bit a bit

Dados cuatro números, imprime el máximo de los 4 números ingresados ​​sin usar operadores condicionales o bit a bit (ni siquiera operadores ternarios).

Ejemplos:

Input : 4 8 6 5
Output : 8

Input : 11 17 8 17
Output : 17

Usamos el hecho de que el valor de “(x – y + abs(x – y))” será 0 de x es menor o igual que y. Usamos este valor como índice en una array de tamaño 2 para elegir el máximo. Una vez que hemos encontrado el máximo de dos elementos, podemos usar la misma técnica para encontrar el máximo de todos.

C++

// CPP program to find maximum of 4 numbers
// without using conditional and bitwise
// operators.
#include <bits/stdc++.h>
using namespace std;
  
int maxOfFour(int w, int x, int y, int z)
{
    int a[2];
    a[0] = w, a[1] = x;
  
    // b is 0 if w is less than or equal
    // to x, else it is non-zero.
    bool b = (a[0] - a[1] + abs(a[0] - a[1]));
  
    // After below operation, a[0] is maximum
    // of w and x.
    swap(a[0], a[!b]);
  
    // After below three steps, a[0] is maximum
    // of w, x and y.
    a[1] = y;
    b = (a[0] - a[1] + abs(a[0] - a[1]));
    swap(a[0], a[!b]);
  
    // After below three steps, a[0] is maximum
    // of w, x, y and z.
    a[1] = z;
    b = (a[0] - a[1] + abs(a[0] - a[1]));
    swap(a[0], a[!b]);
  
    return a[0];
}
  
// Driver code
int main()
{
    int w = 12, x = 15, y = 18, z = 17;
    cout << "Maximum of four : "
         << maxOfFour(w, x, y, z);
    return 0;
}

Python

# Python program to find maximum of 4 numbers 
# without using conditional and bitwise 
# operators. 
def maxOfFour(w, x, y, z):
    a = [0] * 2
    a[0] = w
    a[1] = x 
      
    # b is 0 if w is less than or equal 
    # to x, else it is non-zero. 
    b = bool(a[0] - a[1] + abs(a[0] - a[1]))
    if b: 
        b = 1
    else: 
        b = 0
  
    # After below operation, a[0] is maximum 
    # of w and x. 
    a[0], a[1 - b] = a[1 - b], a[0]
      
    # After below three steps, a[0] is maximum 
    # of w, x and y. 
    a[1] = y 
    b = bool(a[0] - a[1] + abs(a[0] - a[1])) 
    if b: 
        b = 1
    else: 
        b = 0
    a[0], a[1 - b] = a[1 - b], a[0]
      
    # After below three steps, a[0] is maximum 
    # of w, x, y and z. 
    a[1] = z 
    b = bool(a[0] - a[1] + abs(a[0] - a[1]))
    if b: 
        b = 1
    else: 
        b = 0
    a[0], a[1 - b] = a[1 - b], a[0]
      
    return a[0] 
  
# Driver code 
w = 12
x = 15
y = 18
z = 17
print("Maximum of four : ", maxOfFour(w, x, y, z))
  
# This code is contributed by SHUBHAMSINGH10

Producción:

Maximum of four : 18

Este artículo es una contribución de Arkajyoti Banerjee . 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 *