so point of program read numbers text file , put array. have sort array using insertion sort , find median. have calculate mean , display both mean , median. language using c++. design:
pseudocode main: call filereadarray(intarray, max_elems) function , assign return value numelems if numelems <=0, print error message , return call docalculations(average, median, intarray, numelems) function call printoutput(average, median) function end main filereadarray return value: numelems (int) reference parameters: intarray (array of ints) receives: maxelems (int) preconditions: maxelems indicates physical size of intarray (already declared) logic: open input file (up if want read filename). if file doesn't open, return -1. if opens, read 1 number @ time , store in intarray until index of array reaches maxelems or end of file. close file , return index after last 1 read. docalculations return value: (none) reference parameters: average (double), median (int) receives: intarray (array of ints), numelems (int) preconditions: intarray has been populated, numelems indicates how many elements used in intarray logic: calculate mean average. calculate median. calcaverage return value: average (double) reference parameters: (none) receives: intarray (array of ints), numelems (int) preconditions: intarray has been populated, numelems indicates how many elements used in intarray logic: calculate mean average finding sum of elements, dividing numelems calcmedian return value: median (int) reference parameters: (none) receives: intarray (array of ints), numelems (int) preconditions: intarray has been populated, numelems indicates how many , elements used in intarray logic: sort array, return middle element or average (ruonded) of 2 middle elements insertionsortarray return value: (none) reference parameters: data (array of ints) receives: data (array of ints), numelems (int) preconditions: data has been populated, numelems indicates how many elements used in data array logic: sort array using insertion sort. printoutput return value: (none) reference parameters: (none) receives: average (double), median (int) preconditions: average , median have been calculated logic: print average , median labels
i confuse on variable pass functions. language using c++
i'll suggest use std::vector hold values read input file. should pretty easy. using array not c++ , should avoided.
can started:
// pass filename const string reference (i.e. wont changed) // pass vector reference (i.e. change needed) void filereadarray(const string& filename, vector<double>& data) { // read doubles file , // data.push_back(double_value) each value read file } // pass vector const reference (i.e. wont changed) // pass average , median reference (i.e. change needed) void docalculations(const vector<double>& data, int& average, int& median) { double sum = 0; (auto : data) { sum += i; } average = sum/data.size(); // calculate median } // pass average , median const reference (i.e. wont changed) void printoutput(const double& average, const double& median) { cout << "average: " << average << endl; // print median } int main() { vector<double> data; string filename = "my_data_file"; filereadarray(filename, data); // did data? if (data.size() == 0) { cout << "no data in file" << endl; return -1; } // sort vector std::sort (data.begin(), data.end()); double average; double median; docalculations(data, average, median); printoutput(average, median); }
just add comment if clarification needed.
btw:
the sorting proposed not insertion sort. why write when available in better form....
however, if must yourself, be:
vector<double> myinsertionsort(const vector<double>& data) { vector<double> result; // build result vector data vector return result; }
and use like:
vector<double> sorteddata = myinsertionsort(data);
and @ last....
if has use array because school assignment teacher still lives in c-world...
// pass filename const string reference (i.e. wont changed) // pass pointer array (i.e. change needed) // pass maximum value int filereadarray(const string& filename, double* data, int max_doubles) { int numberread = 0; while (numberread < max_doubles) { // read double file if (end_of_file) return numberread ; // end_of_file pseudo code data[numberread] = double_from_file; numberread++; } return numberread; } // pass data pointer // pass size value // pass average , median reference (i.e. change needed) void docalculations(double* data, int size, int& average, int& median) { double sum = 0; (int i=0; < size; i++) { sum += data[i]; } average = sum/size; // calculate median } // pass average , median const reference (i.e. wont changed) void printoutput(const double& average, const double& median) { cout << "average: " << average << endl; // print median } int main() { double data[max_elems]; string filename = "my_data_file"; filereadarray(filename, data, max_elems); // did data? if (data.size() == 0) { cout << "no data in file" << endl; return -1; } // sort vector myinsertionsort(data); double average; double median; docalculations(data, average, median); printoutput(average, median); }
Comments
Post a Comment