// c++ code for a Median of Integer Stream from Text File program #include #include #include #include #include #include #include #include #include #include using namespace std; #include double streamMedian(vector v, int size) { double* s = new double[size]; for (int i = 0; i < size; ++i) { s[i] = v[i]; } for (int i = size - 1; i > 0; --i) { for (int j = 0; j < i; ++j) { if (s[j] > s[j+1]) { double t = s[j]; s[j] = s[j+1]; s[j+1] = t; } } } double median = 0.0; if ((size % 2) == 0) { median = (s[size/2] + s[(size/2) - 1])/2.0; } else { median = s[size/2]; } return median; } int main() { int number; double median; std::vector v; int count = 1; ifstream myfile (\"input.txt\"); if (myfile.is_open()) { while ( myfile >> number ) { cout << \"After reading \" << count << \" element of stream - \"; v.push_back(number); for (int i = 0; i < v.size(); ++i) { cout << v[i] << \" \"; } cout << \"-> \"; sort(v.begin(), v.end()); cout << \"median - \" << streamMedian(v,v.size()) << endl; } myfile.close(); } return 0; } /* input.txt 5 15 1 3 output: After reading 1 element of stream - 5 -> median - 5 After reading 1 element of stream - 5 15 -> median - 10 After reading 1 element of stream - 5 15 1 -> median - 5 After reading 1 element of stream - 1 5 15 3 -> median - 4 */ Solution // c++ code for a Median of Integer Stream from Text File program #include #include #include #include #include #include #include #include #include #include using namespace std; #include double streamMedian(vector v, int size) { double* s = new double[size]; for (int i = 0; i < size; ++i) { s[i] = v[i]; } for (int i = size - 1; i > 0; --i) { for (int j = 0; j < i; ++j) { if (s[j] > s[j+1]) { double t = s[j]; s[j] = s[j+1]; s[j+1] = t; } } } double median = 0.0; if ((size % 2) == 0) { median = (s[size/2] + s[(size/2) - 1])/2.0; } else { median = s[size/2]; } return median; } int main() { int number; double median; std::vector v; int count = 1; ifstream myfile (\"input.txt\"); if (myfile.is_open()) { while ( myfile >> number ) { cout << \"After reading \" << count << \" element of stream - \"; v.push_back(number); for (int i = 0; i < v.size(); ++i) { cout << v[i] << \" \"; } cout << \"-> \"; sort(v.begin(), v.end()); cout << \"median - \" << streamMedian(v,v.size()) << endl; } myfile.close(); } return 0; } /* input.txt 5 15 1 3 output: After reading 1 element of stream - 5 -> median - 5 After reading 1 element of stream - 5 15 -> median - 10 After reading 1 element of stream - 5 15 1 -> median - 5 After reading 1 element of stream - 1 5 15 3 -> median - 4 */.