#include #include #include using namespace std; // Note that min and max are passed by reference void min_max(int numbers[], int size, int &min, int &max) { assert(size > 0); min = max = numbers[0]; for ( int i = 0; i < size; i++) { if ( numbers[i] < min ) { min = numbers[i]; } if ( numbers[i] > max ) { max = numbers[i]; } } } void print_percentiles(int numbers[], int size, int p1 = 25, int p2 = 50, int p3 = 75) { int index1 = size * p1 / 100; int index2 = size * p2 / 100; int index3 = size * p3 / 100; cout << endl << " *** Percentiles *** " << endl; cout << p1 << "th percentile is " << numbers[index1] << endl; cout << p2 << "th percentile is " << numbers[index2] << endl; cout << p3 << "th percentile is " << numbers[index3] << endl; } bool less_than(int a, int b) { return a < b; } // Another example using pass-by reference // Could have implemented this function using pointers void swap_elements(int &i, int &j) { int hold = i; i = j; j = hold; } void sort(int numbers[], int size) { int i, j; for ( i = 1; i < size; i++) { for ( j = 0; j < size-1; j++ ) { if ( less_than(numbers[j+1], numbers[j] ) ) { swap_elements(numbers[j], numbers[j+1]); } } } } void print(int numbers[], int size) { cout << "Array={ "; for ( int i = 0; i < size; i++ ) { cout << numbers[i] << " "; } cout << "}" << endl; } int main(int argc, char** argv) { if ( argc <= 1 ) { cerr << "Usage " << argv[0] << " int_1 int_2 ... int_n" << endl; exit(1); } int size = argc - 1; int my_integers[size]; // Populating the array from command line arguments for ( int i = 0; i < size; i++) { my_integers[i] = atoi(argv[i+1]); } // Find minimum and maximum values in the array int min, max; min_max(my_integers,size,min,max); // Sorting the array sort(my_integers,size); // Print the results cout << "Min: " << min << " and max: " << max << endl; //print(my_integers,size); // Printing various percentiles print_percentiles(my_integers,size); print_percentiles(my_integers,size,30); print_percentiles(my_integers,size,30,60); print_percentiles(my_integers,size,30,60,90); return 0; }