/*************************************************/
//moreSort.h
//R. A. Hillyard
//October 15, 2001
//Interface file gives function prototypes
//with per and post conditions
/*************************************************/

void sort3(int& a, int& b, int& c);
//per  condition a, b, and c have been given integer values
//post condition a, b, and c will be sorted from lowest to highest
void sort3(double& a, double& b, double& c);
//per  condition a, b, and c have been given double values
//post condition a, b, and c will be sorted from lowest to highest
void swap(int& a, int& b);
//per  condition a and b have been given integer values
//post condition the values of a and b will be interchanged
void swap(double& a, double& b);
//per  condition a and b have been given double values
//post condition the values of a and b will be interchanged
/*************************************************/
/*************************************************/
//moreSortFunctions.cpp
//R. A. Hillyard
//October 15, 2001
//Implementation file gives function definitions
/*************************************************/
#include "moreSort.h"
/*****************************************************************/
//sort3 - overloaded function that sorts three integers from smallest to largest
/*****************************************************************/
void sort3(int& a, int& b, int& c)
  {
  if(a > b)
    { swap(a,b); }
  if(a > c)
    { swap(a,c); }
  if(b > c)
    { swap(b,c); }
  }//end sort3
/*****************************************************************/
//swap - overloaded function that interchanges the value of two integers
/*****************************************************************/
void swap(int& a, int& b)
  {
  int temp = a;
  a = b;
  b = temp;
  }//end swap

/*****************************************************************/
//sort3 - overloaded function that sorts three doubles from smallest to largest
/*****************************************************************/
void sort3(double& a, double& b, double& c)
  {
  if(a > b)
    { swap(a,b); }
  if(a > c)
    { swap(a,c); }
  if(b > c)
    { swap(b,c); }
  }//end sort3

/*****************************************************************/
//swap - overloaded function that interchanges the value of two doubles
/*****************************************************************/
void swap(double& a, double& b)
  {
  double temp = a;
  a = b;
  b = temp;
  }//end swap
/*****************************************************************/
/*************************************************/
//moreSortMain.cpp
//R. A. Hillyard
//October 15, 2001
//Main program for moreSort
/*************************************************/
#include<iostream>
#include "moreSort.h"
using namespace std;
int main()
  {
  char choice;
  int a = 0, b = 0, c = 0;
  double x = 0.0, y = 0.0, z = 0.0;
  
  cout << "Double or Ints [D/I]: ";
  cin >> choice;
  if(choice == 'I')
    {
    cout << "enter three ints: ";
    cin >>a>>b>>c;
    sort3(a,b,c);
    cout << "\n sorted: " << a << " " << b << " " << c << endl;
    }
  if(choice == 'D')
    {
    cout << "enter three doubles: ";
    cin >>x>>y>>z;
    sort3(x,y,z);
    cout << "\n sorted: " << x << " " << y << " " << z << endl;
    }
  return 0;
  }//end main
/**************************Program output*************************/
Double or Ints [D/I]: D
enter three doubles: 6.6 4.3 8.2

 sorted: 4.3 6.6 8.2

/*****************************************************************/
Double or Ints [D/I]: I
enter three ints: 8 2 9

 sorted: 2 8 9