User Name Password Register
DaniWeb IT Discussion Community
All
What is DaniWeb IT Discussion Community?
You're currently browsing the C++ section within the Software Development category of DaniWeb, a massive community of 375,199 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 2,054 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our C++ advertiser:
Views: 7867 | Replies: 9
Reply
Join Date: Oct 2004
Posts: 6
Reputation: somer2412 is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
somer2412 somer2412 is offline Offline
Newbie Poster

Help Need help calculating Median when array is even

  #1  
Oct 13th, 2004
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]);
}
AddThis Social Bookmark Button
Reply With Quote  
Join Date: Sep 2004
Posts: 6,009
Reputation: Narue has much to be proud of Narue has much to be proud of Narue has much to be proud of Narue has much to be proud of Narue has much to be proud of Narue has much to be proud of Narue has much to be proud of Narue has much to be proud of 
Rep Power: 26
Solved Threads: 413
Super Moderator
Narue's Avatar
Narue Narue is offline Offline
Expert Meanie

Re: Need help calculating Median when array is even

  #2  
Oct 14th, 2004
>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].
Member of: Beautiful Code Club.
Reply With Quote  
Join Date: Apr 2004
Posts: 3,422
Reputation: Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light 
Rep Power: 15
Solved Threads: 137
Colleague
Dave Sinkula's Avatar
Dave Sinkula Dave Sinkula is offline Offline
long time no c

Re: Need help calculating Median when array is even

  #3  
Oct 14th, 2004
>>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]?
Reply With Quote  
Join Date: Sep 2004
Posts: 6,009
Reputation: Narue has much to be proud of Narue has much to be proud of Narue has much to be proud of Narue has much to be proud of Narue has much to be proud of Narue has much to be proud of Narue has much to be proud of Narue has much to be proud of 
Rep Power: 26
Solved Threads: 413
Super Moderator
Narue's Avatar
Narue Narue is offline Offline
Expert Meanie

Re: Need help calculating Median when array is even

  #4  
Oct 14th, 2004
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.
Member of: Beautiful Code Club.
Reply With Quote  
Join Date: May 2004
Posts: 19
Reputation: matika is an unknown quantity at this point 
Rep Power: 5
Solved Threads: 0
matika matika is offline Offline
Newbie Poster

Re: Need help calculating Median when array is even

  #5  
Oct 15th, 2004
((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;
Reply With Quote  
Join Date: May 2004
Posts: 19
Reputation: matika is an unknown quantity at this point 
Rep Power: 5
Solved Threads: 0
matika matika is offline Offline
Newbie Poster

Solution Re: Need help calculating Median when array is even

  #6  
Oct 15th, 2004
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
Reply With Quote  
Join Date: Apr 2004
Posts: 3,422
Reputation: Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light 
Rep Power: 15
Solved Threads: 137
Colleague
Dave Sinkula's Avatar
Dave Sinkula Dave Sinkula is offline Offline
long time no c

Re: Need help calculating Median when array is even

  #7  
Oct 15th, 2004
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
 */
Reply With Quote  
Join Date: May 2004
Posts: 19
Reputation: matika is an unknown quantity at this point 
Rep Power: 5
Solved Threads: 0
matika matika is offline Offline
Newbie Poster

Re: Need help calculating Median when array is even

  #8  
Oct 20th, 2004
float median(int* x, int n)
{
return ((x[n/2])+(x[(n/2)+1]))/2;
}
Reply With Quote  
Join Date: May 2004
Posts: 19
Reputation: matika is an unknown quantity at this point 
Rep Power: 5
Solved Threads: 0
matika matika is offline Offline
Newbie Poster

Re: Need help calculating Median when array is even

  #9  
Oct 20th, 2004
tell me when it works
Reply With Quote  
Join Date: Apr 2004
Posts: 3,422
Reputation: Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light 
Rep Power: 15
Solved Threads: 137
Colleague
Dave Sinkula's Avatar
Dave Sinkula Dave Sinkula is offline Offline
long time no c

Re: Need help calculating Median when array is even

  #10  
Oct 20th, 2004
Uh... look up.

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

Only community members can participate in forum threads. You must register or log in to contribute.

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 

DaniWeb C++ Marketplace
Thread Tools Display Modes

Other Threads in the C++ Forum

All times are GMT -4. The time now is 2:30 am.
Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC