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];
}

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]);
}
``````

## All 9 Replies

>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
*/``````

float median(int* x, int n)
{
return ((x[n/2])+(x[(n/2)+1]))/2;
}

tell me when it works

Uh... look up.

Oh nevermind.

``````float median(int* x, int n)
{
return ( x [ n / 2 ] + x [ n / 2 - 1] ) / 2.0F;
}``````
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.