Open In App

Maximum of four numbers without using conditional or bitwise operator

Last Updated : 31 Oct, 2023
Comments
Improve
Suggest changes
Like Article
Like
Report

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.

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
C#
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

Arkajyoti Banerjee

. If you like GeeksforGeeks and would like to contribute, you can also write an article using

write.geeksforgeeks.org

or mail your article to [email protected]. See your article appearing on the GeeksforGeeks main page and help other Geeks.


Similar Reads