Прежде всего, это домашнее задание. Я пытался избавиться от ошибок и, как правило, испортить код дальше и в конечном итоге вернуться к исходному коду. Если бы вы могли дать мне какое-то направление (в терминах, которые я могу понять), я был бы очень признателен. Я не думаю, что наш инструктор действительно ожидает, что мы получим это, но я все еще должен попытаться. Я отправляю сообщение, но некоторое время буду отсутствовать на компьютере, поэтому не могу сразу же ответить, спасибо.
#include <stdio.h>
#define MAX 10
main () {
int i;
int num_students;
float total;
long id[MAX]; // Student ID
short midterm[MAX]; // Midterm Grade
short final[MAX]; // Final Grade
float average[MAX]; // Average Grade
float avg_average; // Average of the averages
float diff; // Student's average minus class average
// The average grade is 60% final and 40% midterm
// Compute the course grades, the average course grade,
// and for each student, print out their id, midterm and final grades,
// the average grade, and their difference
i = 0;
// The syntax of this while loop is correct
while (scanf("%i %i %i",&id[i], &midterm[i], &final[i]) != EOF) {
average[i] = midterm[i]*.4 + final[i]*.6;
i++;
}
num_students = i;
for (i = 0; i < num_students; i++) {
total = total + average[i];
}
avg_average = total/num_students;
printf("ID\tMidterm\tFinal\tAvg\tAvgAvg\tDiff\n");
printf("---\t--------\t------\t----\t-------\t-----\n");
for (i = 0; i < num_students; i++) {
diff = avg_average - average[i];
printf("%d\t", id[i]);
printf("%i\t", midterm[i]);
printf("%i\t", final[i]);
printf("%f2.2\t", average[i]);
printf("%f2.2\t",avg_average);
printf("%f2.2\t",diff);
printf("\n");
}
Это файл данных, который я передаю:
0 94 93
1 88 84
2 99 79
3 78 64
4 66 83
5 78 90
6 90 87
7 23 18
8 55 76
9 48 26
10 87 67
11 97 89
12 100 89
13 88 78
14 67 78
15 87 76
16 77 65
17 83 87
18 89 87
Я просто не получаю правильный вывод ни в одной из категорий.