1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
// This program shows the donations made to the United Cause
// by the employees of CK Graphics, Inc. It displays
// the donations in order from lowest to highest
// and in the original order they were received.
#include <iostream>
using namespace std;
// Function prototypes
void arrSelectSort(int *[], int);
void showArray(const int [], int);
void showArrPtr(int *[], int);
int main()
{
const int NUM_DONATIONS = 15; // Number of donations
// An array containing the donation amounts.
int donations[NUM_DONATIONS] = {5, 100, 5, 25, 10,
5, 25, 5, 5, 100,
10, 15, 10, 5, 10 };
// An array of pointers to int.
int *arrPtr[NUM_DONATIONS];
// Each element of arrPtr is a pointer to int. Make each
// element point to an element in the donations array.
for (int count = 0; count < NUM_DONATIONS; count++)
arrPtr[count] = &donations[count];
// Sort the elements of the array of pointers.
arrSelectSort(arrPtr, NUM_DONATIONS);
// Display the donations using the array of pointers. This
// will display them in sorted order.
cout << "The donations, sorted in descending order are: \n";
showArrPtr(arrPtr, NUM_DONATIONS);
// Display the donations in their original order.
cout << "The donations, in their original order are: \n";
showArray(donations, NUM_DONATIONS);
return 0;
}
//****************************************************************
// Definition of function arrSelectSort. *
// This function performs an ascending order selection sort on *
// arr, which is an array of pointers. Each element of array *
// points to an element of a second array. After the sort, *
// arr will point to the elements of the second array in *
// ascending order. *
//****************************************************************
void arrSelectSort(int *arr[], int size)
{
int startScan, minIndex;
int *minElem;
for (startScan = 0; startScan < (size - 1); startScan++)
{
minIndex = startScan;
minElem = arr[startScan];
for(int index = startScan + 1; index < size; index++)
{
if (*(arr[index]) < *minElem)
{
minElem = arr[index];
minIndex = index;
}
}
arr[minIndex] = arr[startScan];
arr[startScan] = minElem;
}
}
//*************************************************************
// Definition of function showArray. *
// This function displays the contents of arr. size is the *
// number of elements. *
//*************************************************************
void showArray(const int arr[], int size)
{
for (int count = 0; count < size; count++)
cout << arr[count] << " ";
cout << endl;
}
//**************************************************************
// Definition of function showArrPtr. *
// This function displays the contents of the array pointed to *
// by arr. size is the number of elements. *
//**************************************************************
void showArrPtr(int *arr[], int size)
{
for (int count = 0; count < size; count++)
cout << *(arr[count]) << " ";
cout << endl;
}
|