У меня есть программа, которая берет целые числа из массива и распечатывает самый большой, самый маленький, средний и список сортировки. Мне нужна помощь с функцией, чтобы найти медиану, а затем распечатать ее. Кроме того, мое среднее значение показывает только целые числа и не цифры, как я думал, когда я использую float. Но поиск медианной функции - важная часть.
#include <stdio.h>
#define NUMBERS_SIZE 5
int sum(int numbers[], int count)
{
int sum = 0;
for (int i = 0; i < count; i++)
sum += numbers[i];
return sum;
}
int maximum(int numbers[], int count)
{
int a;
int max = numbers[0];
for (a = 1; a < count; a++)
if (numbers[a] > max)
max = numbers[a];
return max;
}
int minimum(int numbers[], int count)
{
int a;
int min = numbers[0];
for (a = 1; a < count; a++)
if (numbers[a] < min)
min = numbers[a];
return min;
}
int average(int numbers[], int count)
{
float avg;
int sum = 0;
for (int i = 0; i < count; i++)
sum += numbers[i];
avg = sum/count;
return avg;
}
int cmpfunc (const void * a, const void * b) {
return ( *(int*)a - *(int*)b );
}
int main()
{
int numbers[NUMBERS_SIZE];
int n;
float median=0;
for (int i = 0; i < NUMBERS_SIZE; i++)
{
printf("Enter integer: ");
scanf("%i", &numbers[i]);
}
int result3 = sum(numbers, sizeof(numbers) / sizeof(numbers[0]));
printf("The sum is: %i\n", result3);
int count3 = sizeof(numbers)/sizeof(numbers[0]);
printf("Largest number entered is: %d\n", maximum(numbers, count3));
int count1 = sizeof(numbers)/sizeof(numbers[0]);
printf("Smallest number entered is: %d\n", minimum(numbers, count1));
int count4 = sizeof(numbers)/sizeof(numbers[0]);
printf("Average is %d\n", average(numbers, count4));
qsort(numbers, NUMBERS_SIZE, sizeof(int), cmpfunc);
printf("\nSorted: \n");
for( n = 0 ; n < NUMBERS_SIZE; n++ ) {
printf("%d ", numbers[n]);
}
return 0;
}