DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/)
-   C++ (http://www.daniweb.com/forums/forum8.html)
-   -   Need help calculating Median when array is even (http://www.daniweb.com/forums/thread12395.html)

somer2412 Oct 13th, 2004 10:50 pm
Need help calculating Median when array is even
 
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]);
}

Narue Oct 14th, 2004 11:19 am
Re: Need help calculating Median when array is even
 
>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[size / 2] and a[size / 2 + 1].

Dave Sinkula Oct 14th, 2004 12:04 pm
Re: Need help calculating Median when array is even
 
>>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[size / 2] and a[size / 2 + 1].
Wouldn't that be the mean of a[size / 2] and a[size / 2 - 1]?

Narue Oct 14th, 2004 12:24 pm
Re: Need help calculating Median when array is even
 
Quote:

Originally Posted by Dave Sinkula
>>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[size / 2] and a[size / 2 + 1].
Wouldn't that be the mean of a[size / 2] and a[size / 2 - 1]?

Feh, you're no fun. ;)

matika Oct 15th, 2004 9:25 am
Re: Need help calculating Median when array is even
 
((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;

matika Oct 15th, 2004 9:26 am
Re: Need help calculating Median when array is even
 
Quote:

Originally Posted by matika
((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

Dave Sinkula Oct 15th, 2004 9:55 am
Re: Need help calculating Median when array is even
 
Quote:

Originally Posted by matika
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
 */

matika Oct 20th, 2004 1:40 pm
Re: Need help calculating Median when array is even
 
float median(int* x, int n)
{
return ((x[n/2])+(x[(n/2)+1]))/2;
}

matika Oct 20th, 2004 1:42 pm
Re: Need help calculating Median when array is even
 
tell me when it works

Dave Sinkula Oct 20th, 2004 2:19 pm
Re: Need help calculating Median when array is even
 
Uh... look up.

Oh nevermind.
float median(int* x, int n)
 {
    return ( x [ n / 2 ] + x [ n / 2 - 1] ) / 2.0F;
 }


All times are GMT -4. The time now is 9:49 am.

Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC