#include // Function prototypes int get_scores(int list[]); double get_mean(int list[], int n); void selection_sort(int list[], int n); void display_scores(int list[], int n); // Global variables int scores[75]; int main(void) { int nos; double avg; nos = get_scores(scores); selection_sort(scores, nos); avg = get_mean(scores, nos); printf("The average of the scores is %f\n\n", avg); printf("The highest score is %d\n", scores[0]); printf("The lowest score is %d\n\n", scores[nos - 1]); display_scores(scores, nos); return 0; } /** * Pass a pointer to the first array element * and have the array populated and have the function return the number of elements in the array **/ int get_scores(int list[]) { FILE *scores_file; int temp_score; int i = 0; scores_file = fopen("scores.txt", "r"); while(fscanf(scores_file, "%d", &temp_score) != EOF) { list[i] = temp_score; i++; } return i; } /** * Calculate the average of the scores and return this average */ double get_mean(int list[], int n) { double sum; int i; for(i = 0; i < n - 1; i++) { sum += list[i]; } sum = sum / n; return sum; } /** * Sort the array from high to low with the selection sort algorithm */ void selection_sort(int list[], int n) { int i, j, max, temp; for(i = n - 1; i >= 0; i--) { max = i; for(j = i - 1; j >= 0; j--) { if(list[j] < list[max]) { max = j; } temp = list[i]; list[i] = list[max]; list[max] = temp; } } } /* * Display the scores with a tab between each one */ void display_scores(int list[], int n) { int i; printf("The scores in descending order:\n"); for(i = 0; i < n - 1; i++) { printf("%d\t", list[i]); } printf("\n"); }