Вывести таблицу среднего балла по всем дисциплинам - 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;
}

Объяснение кода листинга программы

Код выполняет следующие действия:

  1. Открывает файл для записи с помощью функции fopen.
  2. Выводит шапку таблицы на экран с помощью printf.
  3. Проходит по всем элементам списка pL с помощью цикла while и условного оператора if.
  4. Если название дисциплины в текущем узле совпадает с одним из названий в массиве mach, то код увеличивает счетчик k и сохраняет значение оценки в переменную t.
  5. После прохода по всем элементам списка, для каждой дисциплины вычисляет средний балл, сохраняет его в переменную sr.
  6. Выводит на экран и записывает в файл строку с названием дисциплины и средним баллом.
  7. Закрывает файл с помощью функции fclose.
  8. Возвращает 1 в качестве результата выполнения функции.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5
Похожие ответы