Please help I am writing a program that calculates the mean and median of a sequence of integers. My program works fine as long as the array is odd. Can someone please help me with a statement to calculate the median when the array is even. I have included my code for the program.

#include <iostream>

   float mean   (const int* A, size_t size); //calculates mean of data in A
   float median (int* A, size_t size); // calculates median of data in A
   void swap    (int& x, int& y); //  interchanges values of x and y
   void sort    (int*A, size_t size); // sorts the data in A
   void bubblesort (int, int);

int main()
{
 int n;
 size_t size;
 int A [100]; size = 0;
 std::cout << "Enter data to calculate the mean and median: ";
 while((std::cin >> n) && (size < 100))
   {
     A[size] = n;
     ++size;
   }

 for (size_t i = 0; i < size; i++)
 std::cout << A[i] << ' ';
 std::cout << '\n';

std::cout << "The mean of the data entered is:   "  << mean(A,size) << '\n';
 std::cout << "The median of the data entered is: "  << median(A,size)<< '\n';

 for (size_t i = 0; i < size; i++)
   std::cout << A[i] << ' ';
 std::cout << '\n';
 return 0;
}

float mean(const int* A, size_t size)
 {
  float total = 0;
   for (size_t i = 0; i < size; i++)
     total += A[i];
   return total / size;
 }

 float median(int* A, size_t size)
 {
   sort(A,size);
   return A[size/2];
 }

 void swap(int& x, int& y)
 {
   int hold = x;
   x = y;
   y = hold;
 }

 void sort(int* A, size_t size)
   // bubble sort
{
   for (size_t pass = 0; pass < size - 1; pass ++)
      for (size_t j = 0; j < size - 1; j++)
         if (A[j] > A[j + 1])
           swap(A[j], A[j+1]);
 }

Edited 3 Years Ago by Dani: Formatting fixed

>Can someone please help me with a statement to calculate the median when the array is even.
Take the median of the two middle items: a and a.

>>Can someone please help me with a statement to calculate the median when the array is even.
>Take the median of the two middle items: a and a.
Wouldn't that be the mean of a and a[size / 2 - 1]?

>>Can someone please help me with a statement to calculate the median when the array is even.
>Take the median of the two middle items: a and a.
Wouldn't that be the mean of a and a[size / 2 - 1]?

Feh, you're no fun. ;)

((n/2)+(n+1)/2)/2

n is the nmber of elements in the array

i e
if yr array was x[n];
median = ((x[n]/2)+(x[n]+1)/2)/2;

((n/2)+(n+1)/2)/2

n is the nmber of elements in the array

i e
if yr array was x[n];
median = ((x[n]/2)+(x[n]+1)/2)/2;

sorry again it will b ((x[n]/2)+(x[n+1])/2)/2

sorry again it will b ((x[n]/2)+(x[n+1])/2)/2

Really?

#include <iostream>
 
 float median(int* x, int n)
 {
    return ((x[n]/2)+(x[n+1])/2)/2;
 }
 
 int main()
 {
    int i, A[] = {1,2,3,4,5,6,7,8,9,10}, size = sizeof A / sizeof *A;
    float result = median(A, size);
    for ( i = 0; i < size; i++ )
    {
 	  std::cout << A[i] << ' ';
    }
    std::cout << "\nThe median of the data entered is: " << result << '\n';
    return 0;
 }
 
 /* my output
 1 2 3 4 5 6 7 8 9 10
 The median of the data entered is: 1.38446e+06
 */
This article has been dead for over six months. Start a new discussion instead.