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