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