Given four numbers, print the maximum of the 4 entered numbers without using conditional or bitwise operator (not even ternary operators). Examples:
Input : 4 8 6 5
Output : 8
Input : 11 17 8 17
Output : 17
We use the fact that value of “(x – y + abs(x – y))” will be 0 of x is less than or equal to y. We use this value as index in an array of size 2 to pick maximum. Once we have found maximum of two elements, we can use same technique for finding maximum of all.
// 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 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 |
using System;
class Program
{ static int MaxOfFour( int w, int x, int y, int z)
{
int [] a = new int [2];
a[0] = w;
a[1] = x;
// b is false if w is less than or equal
// to x, else it is true.
bool b = (a[0] - a[1] + Math.Abs(a[0] - a[1])) != 0;
// After below operation, a[0] is maximum
// of w and x.
Swap( ref a[0], ref a[Convert.ToInt32(!b)]);
// After below three steps, a[0] is maximum
// of w, x and y.
a[1] = y;
b = (a[0] - a[1] + Math.Abs(a[0] - a[1])) != 0;
Swap( ref a[0], ref a[Convert.ToInt32(!b)]);
// After below three steps, a[0] is maximum
// of w, x, y and z.
a[1] = z;
b = (a[0] - a[1] + Math.Abs(a[0] - a[1])) != 0;
Swap( ref a[0], ref a[Convert.ToInt32(!b)]);
return a[0];
}
static void Swap( ref int a, ref int b)
{
int temp = a;
a = b;
b = temp;
}
static void Main()
{
int w = 12, x = 15, y = 18, z = 17;
Console.WriteLine( "Maximum of four: " + MaxOfFour(w, x, y, z));
}
} |
Output:
Maximum of four : 18
This article is contributed by
. If you like GeeksforGeeks and would like to contribute, you can also write an article using
or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.