```
//Roopak Mitra
//Program sorts user input from lowest to highest
#include <iostream>
using namespace std;
void fillArray(int a[], int size, int& numberUsed);
//Precondition: size is the declared size of the array a.
//Postcondition: numberUsed is the number of values stored in a.
//a[0] through a[numberUsed - 1] have been filled with
//nonnegative integers read from the keyboard.
void sort(int a[], int numberUsed);
//Precondition: numberUsed <= declared size of the array a.
//The array elements a[0] through a[numberUsed - 1] have values.
//Postcondition: The values of a[0] through a[numberUsed - 1] have
//been rearranged so that a[0] <= a[1] <= ... <= a[numberUsed - 1].
void swapValues(int& v1, int& v2);
//Interchanges the values of v1 and v2.
int indexOfSmallest(const int a[], int startIndex, int numberUsed);
//Precondition: 0 <= startIndex < numberUsed. Reference array elements
//have values. Returns the index i such that a[i] is the smallest of the
//values a[startIndex], a[startIndex + 1], ..., a[numberUsed - 1].
int main( )
{
int acog = 0;
const int Max_Value = 50;
int sampleArray[Max_Value];
int numberUsed;
fillArray(sampleArray, Max_Value, numberUsed);
sort(sampleArray, numberUsed);
cout << "After sorting the pancake sizes are";
for (int index = 0; index < numberUsed; index++)
cout << sampleArray[index] << " ";
cout << endl;
cin >> acog;
return 0;
}
void fillArray(int a[], int size, int& numberUsed)
{
cout << "Enter pancake diameters (-1 to end entering) ";
int next, index = 0;
cin >> next;
while ((next >= 0) && (index < size))
{
a[index] = next;
index++;
cin >> next;
}
numberUsed = index;
}
void sort(int a[], int numberUsed)
{
int indexOfNextSmallest;
for (int index = 0; index < numberUsed - 1; index++)
{
indexOfNextSmallest =
indexOfSmallest(a, index, numberUsed);
swapValues(a[index], a[indexOfNextSmallest]);
}
}
void swapValues(int& v1, int& v2)
{
int temp;
temp = v1;
v1 = v2;
v2 = temp;
}
int indexOfSmallest(const int a[], int startIndex, int numberUsed)
{
int min = a[startIndex];
int indexOfMin = startIndex;
for (int index = startIndex + 1; index < numberUsed; index++)
if (a[index] < min)
{
min = a[index];
indexOfMin = index;
//min is the smallest of a[startIndex] through a[index]
}
return indexOfMin;
}
```