//file: top2Of3_01.cpp
//author: AOU
/*
Prototype:
bool top2Of3_verify(int x, int y, int z, int a, int b)
Problem Definition:
verify that a and b are the top two values from x,y,z
return true if this is the case else return false
Preconditions:
x,y,z,a,b should be in given range and defined
Postconditions:
x,y,z,a,b should not be modified
should return true if
if the values of x,y,z are sorted (asc) and
put in v1,v2,v3 then
a should be = v3 and b should be = v2
else
return false
Examples:
top2Of3_verify(1,2,3, -1,3) => false
top2Of3_verify(1,2,3, 3,2) => true
top2Of3_verify(1,2,3, 3,1) => false
Algorithm:
array[0]=x
array[1]=y
array[2]=z
sortAscBubble(array)
if (a != array[2]) return false |
if (b != array[1]) return false |or return (a==array[2] && b==array[1])
|
return true |
Source Code:
*/
/*
Problem Definition:
Write a function to find the top two values out of given three values.
Type of values=?
Where are the values?
Range of values?
Order of output?
Where does the output go?
Examples:
1,2,3 => 3,2
Algorithm: Top2Of3(x,y,z,a,b)
Sort in increasing order
Output the last two values
if (x > y) then swap x,y
if (x > z) then swap x, z
if (y > z) then swap y, z
a = z
b = y
*/
#include <iostream>
#include <ctime>
using namespace std;
void top2Of3(int x, int y, int z, int &a, int &b);
void swap(int &v, int &w);
void test_top2of3(void);
bool top2Of3_verify(int x, int y, int z, int a, int b);
// top2Of3_verify(1,2,3,4,5)=>false
// top2Of3_verify(1,2,3,3,2)=>true
const int MIN_NUMBER = -99;
const int MAX_NUMBER = +99;
const int TEST_COUNT = 100;
void main(void)
{
srand( (unsigned)time( NULL ) );
//srand(123);
test_top2of3();
}
int myRand(void)
{
//returns a random number from [MIN_NUMBER, MAX_NUMBER
/*
[0,9] rand()%(9-0+1)
[1,9] 1 + rand()%(9-1+1)
[-1,9] -1 + rand()%(9-(-1)+1)
[x,y] x + rand()%(y-x+1)
*/
return MIN_NUMBER + rand()%(MAX_NUMBER-MIN_NUMBER+1);
}
void test_top2of3(void)
{
int v1,v2,v3;
int r1, r2;
v1 = 1;
v2 = 2;
v3 = 3;
r1 = 0;
r2 = 0;
for (int i=1; i<=TEST_COUNT; i++)
{
v1 = myRand();
v2 = myRand();
v3 = myRand();
top2Of3(v1,v2,v3,r1,r2);
cout << "v1=" << v1 << endl;
cout << "v2=" << v2 << endl;
cout << "v3=" << v3 << endl;
cout << "r1=" << r1 << endl;
cout << "r2=" << r2 << endl;
if(top2Of3_verify(v1,v2,v3,r1,r2))
cout << "works\n";
else
cout << "********DID NOT WORK********\n";
cout << "-----------------------\n";
}
}
void swap(int &v, int &w)
{
int temp = v;
v = w;
w = temp;
}
void top2Of3(int x, int y, int z, int &a, int &b)
{
if (x > y) swap (x, y);
if (x > z) swap (x, z);
if (y > z) swap (y, z);
a = z;
b = y;
}
bool top2Of3_verify(int x, int y, int z, int a, int b)
{
return true;
}
|