This C++ program keeps giving me the wrong median. #include using namespace std; double median_value(int* arrptr, int n); class Median { private: int* array; int n; public: void getSizeArray(); void getNumElements(); void displayMedian(); ~Median() { delete[] array; } }; void Median::getSizeArray() { cout << "How big is array?"; cin >> n; } void Median::getNumElements() { array = new int[20]; for (int i = 0; i < n; i++) { cout << "How much "; cin >> *(array + i); } } void Median::displayMedian() { int m = median_value(array, n); cout << m; } int main() { Median showMedian; showMedian.getSizeArray(); showMedian.getNumElements(); showMedian.displayMedian(); return 0; } double median_value(int* arrptr, int n) { double median; if (n % 2 == 0) { median = (*(arrptr + (n / 2)) + *(arrptr + (n / 2 +1))) / 2; } else { //(arrptr[i]+(n/2)) median = *(arrptr + (n / 2)); } return median; }
This C++ program keeps giving me the wrong median.
#include <iostream> using namespace std; double median_value(int* arrptr, int n); class Median { private: int* array; int n; public: void getSizeArray(); void getNumElements(); void displayMedian(); ~Median() { delete[] array; } }; void Median::getSizeArray() { cout << "How big is array?"; cin >> n; } void Median::getNumElements() { array = new int[20]; for (int i = 0; i < n; i++) { cout << "How much "; cin >> *(array + i); } } void Median::displayMedian() { int m = median_value(array, n); cout << m; } int main() { Median showMedian; showMedian.getSizeArray(); showMedian.getNumElements(); showMedian.displayMedian(); return 0; } double median_value(int* arrptr, int n) { double median; if (n % 2 == 0) { median = (*(arrptr + (n / 2)) + *(arrptr + (n / 2 +1))) / 2; } else { //(arrptr[i]+(n/2)) median = *(arrptr + (n / 2)); } return median; }
Step by step
Solved in 3 steps with 1 images