answersLogoWhite

0

Use the median-of-three algorithm:

int min (int a, int b) { return a<b?a:b; }

int max (int a, int b) { return a<b?b:a; }

int median_of_three (int a, int b, int c) { return max (min (a, b), min (max (a, b), c)); }

Note that the algorithm does not cater for equal values which creates a problem when any two values are equal, because there are only two values to play with, neither of which can be regarded as being the middle value. If the equal value is the lower of the two values, the largest value is returned if and only if it is the last of the three values, otherwise the lowest value is returned. But when the equal value is the larger of the two values, the largest value is always returned.

Lowest value is equal:

Input: 0, 0, 1 = max (min (0, 0), min (max (0, 0), 1)) = max (0, min (0, 1)) = max (0, 1) = 1

Input: 0, 1, 0 = max (min (0, 1), min (max (0, 1), 0)) = max (0, min (1, 0)) = max (0, 0) = 0

Input: 1, 0, 0 = max (min (1, 0), min (max (1, 0), 0)) = max (0, min (1, 0)) = max (0, 0) = 0

Highest value is equal:

Input: 0, 1, 1 = max (min (0, 1), min (max (0, 1), 1)) = max (0, min (1, 1)) = max (0, 1) = 1

Input: 1, 0, 1 = max (min (1, 0), min (max (1, 0), 1)) = max (0, min (1, 1)) = max (0, 1) = 1

Input: 1, 1, 0 = max (min (1, 1), min (max (1, 1), 0)) = max (1, min (1, 0)) = max (1, 0) = 1

The only way to resolve this problem and produce a consistent result is to sum all three inputs then subtract the minimum and maximum values:

int median_of_three (int a, int b, int c) { return a + b + c - min (min (a, b), c) - max (max (a, b), c)); }

Lowest value is equal:

Input: 0, 0, 1 = 0 + 0 + 1 - min (min (0, 0), 1) - max (max (0, 0), 1) = 1 - 0 - 1 = 0

Input: 0, 1, 0 = 0 + 1 + 0 - min (min (0, 1), 0) - max (max (0, 1), 0) = 1 - 0 - 1 = 0

Input: 1, 0, 0 = 1 + 0 + 0 - min (min (1, 0), 0) - max (max (1, 0), 0) = 1 - 0 - 1 = 0

Highest value is equal:

Input: 0, 1, 1 = 0 + 1 + 1 - min (min (0, 1), 1) - max (max (0, 1), 1) = 2 - 0 - 1 = 1

Input: 1, 0, 1 = 1 + 0 + 1 - min (min (1, 0), 1) - max (max (1, 0), 1) = 2 - 0 - 1 = 1

Input: 1, 1, 0 = 1 + 1 + 0 - min (min (1, 1), 0) - max (max (1, 1), 0) = 2 - 0 - 1 = 1

This makes sense because when we sort 0, 0, 1 in ascending order, 0 is in the middle, while 0, 1, 1 puts 1 in the middle.

User Avatar

Wiki User

9y ago

What else can I help you with?

Continue Learning about Engineering

What is the difference of C to C plus plus and Dev C?

C and C++ are both programming languages whereas Dev C++ is an implementation of C/C++. Dev C++ is free, was written in Delphi and includes the MinGW compiler.


How do you get allegro to work on dev c plus plus?

To get Allegro working with Dev-C++, first download the Allegro library suitable for your system. Then, set up your Dev-C++ environment by adding the Allegro include and library directories in the &quot;Compiler Options&quot; under the &quot;Directories&quot; tab. Next, link the necessary Allegro libraries by adding them in the &quot;Linker&quot; section of the project options. Finally, include the required Allegro headers in your source code and ensure the Allegro DLLs are in your project's directory when you run the program.


What is the type of field is used for money value in access?

Dear Sir, Currency is used as a type of field for money values in access. Dev


Where can you practice c plus plus is there a website that can be useful?

C Plus Plus, or C++ is an intermediate-level computer programming language. It was developed by Bjarne Stroustrup starting in 1979. You can practice C Plus Plus at a site such as Cprogramming.


What is better turbo c or dev C?

Depends upon the personal opinion. They both are different IDE. Dev C used the MICGW compiler while Turbo C uses Borland compiler. Hence due to this, certain inbuilt functions will not work in Dev C. clrscr() is one such function. However Turbo C is outdated and does not use follow many of the programming standards.

Related Questions

What are the objects used in dev c plus plus?

Objects in Dev C++ are the same as objects in generic C++, insofar as an object is an instance of a class.


What is the difference of C to C plus plus and Dev C?

C and C++ are both programming languages whereas Dev C++ is an implementation of C/C++. Dev C++ is free, was written in Delphi and includes the MinGW compiler.


Which is better dev c plus plus or Microsoft Visual C plus plus 2008 Express Edition?

Dev c++ is a good tool, but it's outdated. VS is the best for software development especially with shareware license.


Which finger is shanidev?

Shani Dev is associated with the middle finger. In Hindu mythology and astrology, it is believed that this finger represents discipline, responsibility, and karma, which are some of the key attributes associated with Shani Dev.


Formula for z-test?

The z score is calculated from the distance of a value from the distribution center divided by the standard dev. (x-xbar)/st. dev


How do you clear the screen in Dev C plus plus compiler?

Clearing screen in DEV C++ compiler :#includeint main(){system("cls");}OR: Permanent solution :-Paste the following text in "C:\Dev-Cpp\include\conio.h" of your system#include#includevoid clrscr(){system("cls");}Then you can use clrscr() as a normal built in function under !!!!!!!!!!!


How do you draw in Dev c plus plus?

Download and install the WinBGIM Devpack. Once installed, you can include graphics.h to draw graphics.


What nicknames did Dev Anand go by?

Dev Anand's full name is Dharam Dev Anand


Is dev c plus plus same as turbo c plus plus?

No. Turbo C++ is a commercial product that once belonged to Borland Codegear, but is now owned by Embarcadero Technologies, and is now known as Embarcadero C++ Builder. Dev C++ was an open-source project originally developed by Bloodshed Software until 2005. In 2011, the project was taken over by Johan Mes Orwell and is now known as wxDev C++. Dev C++ was originally developed with Delphi, another product once owned by Borland, and is the only real connection between the two.


What is the abbreviation for 'development'?

The abbreviation is "DEV"


What caste is dev surname?

DEV surname are Ramgarhias.


How do you get allegro to work on dev c plus plus?

To get Allegro working with Dev-C++, first download the Allegro library suitable for your system. Then, set up your Dev-C++ environment by adding the Allegro include and library directories in the &quot;Compiler Options&quot; under the &quot;Directories&quot; tab. Next, link the necessary Allegro libraries by adding them in the &quot;Linker&quot; section of the project options. Finally, include the required Allegro headers in your source code and ensure the Allegro DLLs are in your project's directory when you run the program.