Switching from ascending to descending

I am supposed to reverse the array from ascending order to descending, but everything I tried has not worked. I know it is just a quick fix, but I can't find it.

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;
}
You can try STL reverse: http://www.cplusplus.com/reference/algorithm/reverse/
You would want to run it as std::reverse(arr, arr + size_of_your_array);
EDIT:
Now that I think about this, if you want to do it manually you just have to swap first and last elemnt, second and second from the end and so on until it's reversed.
Last edited on
Topic archived. No new replies allowed.