#include <stdio.h>
#define TRUE 1
#define FALSE 0
int getMax(int numbers[]);
int getMin(int numbers[]);
int getSum(int numbers[]);
float getAvg(int count, int sum);
void sortArray(int numbers[]);
float getMed(int numbers[]);
int getMax(int numbers[]) {
int high = numbers[0];
for(int i = 0; i < 10; i++) {
if(numbers[i] > high) {
high = numbers[i];
}
}
return high;
}
int getMin(int numbers[]) {
int low = numbers[0];
for(int i = 0; i < 10; i++) {
if(numbers[i] < low) {
low = numbers[i];
}
}
return low;
}
int getSum(int numbers[]) {
int sum = 0;
for(int i = 0; i < 10; i++) {
sum += numbers[i];
}
return sum;
}
float getAvg(int count, int sum) {
int average = sum / count;
return average;
}
/* https://www.lynda.com/C-tutorials/Using-loops-searching-sorting/164457/180402-4.html */
void sortArray(int numbers[]) {
int swapped;
do {
swapped = FALSE;
for (int i = 1; i < 10; i++) {
int temp = numbers[i];
// If the current pair is out of order
if (numbers[i - 1] > numbers[i]) {
// Swap the integers in numbers[i-1] and numbers[i]
temp = numbers[i - 1];
numbers[i-1] = numbers[i];
numbers[i] = temp;
// Notify the loop that something has changed in the array
swapped = TRUE;
}
}
} while(swapped == TRUE);
}
/* I would prefer to do something like this: int sortedArray[10] = sortArray(numbers);
* but I don't think it's possible to return an array from a function. Ask the teacher */
float getMed(int numbers[]) {
int swapped;
do {
swapped = FALSE;
for (int i = 1; i < 10; i++) {
int temp = numbers[i];
// If the current pair is out of order
if (numbers[i - 1] > numbers[i]) {
// Swap the integers in numbers[i-1] and numbers[i]
temp = numbers[i - 1];
numbers[i-1] = numbers[i];
numbers[i] = temp;
// Notify the loop that something has changed in the array
swapped = TRUE;
}
}
} while(swapped == TRUE);
// We know that the array has ten elements exactly
// Therefore index 4 + 5 are the middle numbers
float median = (numbers[4] + numbers[5] / 2);
return median;
}
int main() {
int numbers[10];
printf("Please enter 10 integers:\n\n");
for(int i = 0; i < 10; i++) {
scanf("%i", &numbers[i]);
}
int sum = getSum(numbers);
int min = getMax(numbers);
int max = getMin(numbers);
int avg = getAvg(10, sum);
int median = getMed(numbers);
sortArray(numbers);
printf("\nMinimum: %i\n", min);
printf("\nMaximum: %i\n", max);
printf("\nSum: %i\n", sum);
printf("\nAverage: %g\n", avg);
printf("\nSorted: ");
for(int i = 0; i < 10; i++) {
printf("%i ", numbers[i]);
}
printf("\n\nMedian: %g", median);
return 0;
}
Comments