/******************************************************************************************** P5-A.cpp Program that finds the largest, smallest, average and median value from a set of data in a file supplied by the user, then echos those values to the user. ********************************************************************************************/ //included libraries #include <iostream> #include <fstream> #include <string> #include <assert.h> using namespace std; //function prototypes void SetupArray(string filename, float array[], const int maxelements, int& size); float largestOf(const float[], unsigned int count); float smallestOf(const float[], unsigned int count); float averageOf(const float[], unsigned int count); float medianOf(const float[], unsigned int count); //function definitions int main() { int count = 0; const int maxelements = 1000; float list[maxelements]; //prompt and extract the rest of the set cout << "Enter the filename to read: "; string filename; cin >> filename; SetupArray(filename, list, maxelements, count); //output the results cout << endl; if (count > 0) cout << "\nResults:" << endl << " Smallest: " << smallestOf(list, count) << endl << " Largest: " << largestOf(list, count) << endl << " Average: " << averageOf(list, count) << endl << " Median: " << medianOf(list, count) << endl; else cout << "No valid input was received; therefore, there are no results." << endl; return 0; } void SetupArray(string filename, float array[], const int maxelements, int& size) { ifstream fin(filename.c_str()); if (!fin) { cerr << "Unable to open " << filename << " for reading."; size = -1; } else size = 0; for (int i = 0; i < maxelements; i++) { float input; if (fin >> input) { array[i] = input; size++; } else break; } return; } ////////////////////////////////////////////////////////////////////////////////////////////// // Parses the array and returns the largest value of all elements in the array. // count is the total number of valid elements in the array float largestOf(const float A[], unsigned int count) { //check for a valid array assert(count > 0); //force-fit the first value as largest float largest = A[0]; //check the rest of the set for (int i = 1; i < count; i++) if (A[i] > largest) largest = A[i]; return largest; } ////////////////////////////////////////////////////////////////////////////////////////////// // Parses the array and returns the smallest value of all elements in the array. // count is the total number of valid elements in the array float smallestOf(const float A[], unsigned int count) { //check for a valid array assert(count > 0); //force-fit the first value as smallest float smallest = A[0]; //check the rest of the set for (int i = 1; i < count; i++) if (A[i] < smallest) smallest = A[i]; return smallest; } ////////////////////////////////////////////////////////////////////////////////////////////// // Parses the array and returns the arithmetic average all elements in the array. // count is the number of elements to sum, and assumes that it is valid for the array in Arg1 float averageOf(const float A[], unsigned int count) { //check for a valid array assert(count > 0); float average, sigma = 0.; //Sum the elements for (int i = 1; i < count; i++) sigma += A[i]; average = sigma/count; return average; } ////////////////////////////////////////////////////////////////////////////////////////////// // Rreturns the mean of a (presumably) sorted array. // count is the number of elements in the array float medianOf(const float A[], unsigned int count) { //check for a valid array assert(count > 0); float median = A[(count-1)/2]; return median; }