c++ - confuse about passing variables to functions -


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