//p02Max
//Author: Me
//Date 07/03/2001
/*
Project#01
State the problem
Examples
Algorithms
Code: max2of3
swap
disp
main
Output:10 cases
Date Assigned: July 3, 2001
Date Due: July 6, 2001
*/
/*
Write a function that will return
two highest values of the three integer values
name: max2of3
in : a, b, c
out: x, y
a, b, c, x, and y are integers
x should be >= y
Examples:
call max2of3(1,1,2,x,y)
x=2, y=1
call max2of3(1,3,2,x,y)
x=3, y=2
call max2of3(1,2,2,x,y)
x=2, y=2
Plan1: Put the max of three in x, and max of the remaining in y
Plan2: Find the lowest,
put max of remaining in x,
and the remaining of remaining in y
Plan3: Sort in decreasing order, x = a, y = b
Plan4: Put max in x, dump min, y gets the remaining
Plan5: m1 = max(a,b), m2 = max(b,c)
x = max(m1, m2), y = min(m1, m2)
(does not work)
Plan6: Dump min, put remaining ordered in x, y
Algorithm3:
Sort in decreasing order, x = a, y = b
-------
Sort a, b, c in decreasing order
x = a
y = b
-------
do the following 2 times
if a<b then swap(a, b)
if b<c then swap(b, c)
end do
x = a
y = b
-------
*/
#include <iostream.h>
void max2of3(int a, int b, int c, int &x, int &y);
void swap(int &p, int &q);
void disp (int a, int b, int c, int x, int y);
void main (void)
{
int x, y;
int a, b, c;
a=1; b=2; c=3; x = 0; y = 0; max2of3(a, b, c, x, y); disp(a, b, c, x, y);
a=3; b=2; c=1; x = 0; y = 0; max2of3(a, b, c, x, y); disp(a, b, c, x, y);
a=1; b=3; c=2; x = 0; y = 0; max2of3(a, b, c, x, y); disp(a, b, c, x, y);
a=1; b=2; c=2; x = 0; y = 0; max2of3(a, b, c, x, y); disp(a, b, c, x, y);
a=2; b=2; c=2; x = 0; y = 0; max2of3(a, b, c, x, y); disp(a, b, c, x, y);
a=3; b=2; c=2; x = 0; y = 0; max2of3(a, b, c, x, y); disp(a, b, c, x, y);
}
void disp (int a, int b, int c, int x, int y)
{
cout << "(a, b, c) = (" << a << ", " << b << ", " << c << ") "
<< "(x, y) = (" << x << ", " << y << ")\n";
}
void swap(int &p, int &q)
{
if (p != q)
{
int t = p;
p = q;
q = t;
}
}
void max2of3(int a, int b, int c, int &x, int &y)
{
for (int i=1; i<=2; i++)
{
if (a<b)
swap(a, b);
if (b<c)
swap(b, c);
}
x = a;
y = b;
}
|