Вывести таблицу среднего балла по всем дисциплинам - C (СИ)
Формулировка задачи:
Нужно вывести таблицу среднего балла по всем дисциплинам.
Имеется список в файле такого вида:
Не могу понять, какое должно быть условие вместо (k==3).
В таблице может быть и больше трех дисциплин.
int ShowTable(pLIST pL,char *file){ FILE *f; int k=0, t=0, sum=0; float sr=0; pNODE pN=pL->begin; char mach[5][n]={"MO","TIPiS","TA","UMF","IT"}; if (isEmpty(pL)) return 0; if(f=fopen(file,"w")){ printf("|Дисциплина|Ср. балл|\n"); for(int i=0;i<5;i++) { while(pN){ if(strcmp(mach[i],pN->namedis)==0) { k++; t=atoi(pN->ball); sum=sum+t; } pN=pN->next; } if (k==3) { sr=sum/k; printf("|%s\t|%.3f\t|\n",mach[i],sr); fprintf(f,"|%s\t|%.3f\t|\n",mach[i],sr); } sum=0; k=0; sr=0; pN=pL->begin; } } fclose(f); return 1; }
Решение задачи: «Вывести таблицу среднего балла по всем дисциплинам»
textual
Листинг программы
int ShowTable(pLIST pL,char *file){ FILE *f; int k=0, t=0, sum=0, j; float sr=0; pNODE pN=pL->begin; char mach[5][n]={"MO","TIPiS","TA","UMF","IT"}; if (isEmpty(pL)) return 0; if(f=fopen(file,"w")){ printf("|Дисциплина|Ср. балл|\n"); for(int i=0;i<5;i++,j=0) { while(pN){ if(strcmp(mach[i],pN->namedis)==0) { k++; t=atoi(pN->ball); sum=sum+t; j=1; } pN=pN->next; } if (j==1) { sr=sum/k; printf("|%s\t|%.3f\t|\n",mach[i],sr); fprintf(f,"|%s\t|%.3f\t|\n",mach[i],sr); } sum=0; k=0; sr=0; pN=pL->begin; } } fclose(f); return 1; }
Объяснение кода листинга программы
Код выполняет следующие действия:
- Открывает файл для записи с помощью функции
fopen
. - Выводит шапку таблицы на экран с помощью
printf
. - Проходит по всем элементам списка
pL
с помощью циклаwhile
и условного оператораif
. - Если название дисциплины в текущем узле совпадает с одним из названий в массиве
mach
, то код увеличивает счетчикk
и сохраняет значение оценки в переменнуюt
. - После прохода по всем элементам списка, для каждой дисциплины вычисляет средний балл, сохраняет его в переменную
sr
. - Выводит на экран и записывает в файл строку с названием дисциплины и средним баллом.
- Закрывает файл с помощью функции
fclose
. - Возвращает 1 в качестве результата выполнения функции.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д