Вывести фамилии неуспевающих студентов с указанием номеров групп - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Создать массив структур, содержащий сведения о сдаче студентами сессии. Каждая структура имеет поля – номер группы, фамилия студента, оценки по пяти экзаменам и пяти зачетам (з – зачет, н - незачет). Выдать на печать следующую информацию: фамилии неуспевающих студентов с указанием номеров групп; средний балл, полученный группой Х в целом. Значение Х вводится по запросу с терминала

Решение задачи: «Вывести фамилии неуспевающих студентов с указанием номеров групп»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define STUDS 5 //количество студентов
typedef struct
{
    long int group; //группа
    char name[15]; //имя
    int exam[5]; //экзамены
    int zach[5]; //зачеты
    int sum; //для суммирования оценок
}Student;
int main(void)
{
    Student stud[STUDS]={0}; //объявление
    int i,j; //переменные-счетчики
    int x; //для запроса группы
    int sm=0;
    int gcnt=0;
 
    puts("---------------------------------------");
    puts("Zapolnenie informacii o studentah:");
    for (i=0;i<STUDS;i++) //заполняем информацию
    {
        printf("-----STUDENT %d-----\n",i+1);
        printf("Nomer grupi: ");
        scanf("%ld",&stud[i].group);
        printf("Familiya: ");
        scanf("%s",stud[i].name);
        for (j=0;j<5;j++) //заполняем отметки
        {
            printf("Exam #%d: ",j);
            scanf("%d",&stud[i].exam[j]);
            printf("Zach #%d: ",j);
            scanf("%d",&stud[i].zach[j]);
            stud[i].sum+=stud[i].exam[j];
            stud[i].sum+=stud[i].zach[j];
        }
 
        puts("---------------------------------------");
    }
    puts("---------------------------------------");
    puts("Zapolneno!");
    puts("---------------------------------------");
 
    for(i=0;i<STUDS;i++)
    {
        if((stud[i].sum/10) < 3) //если средний бал за испытания меньше тройки.
        {
            printf("Student: %s - Group: %ld\n",stud[i].name,stud[i].group);
        }
    }
    puts("---------------------------------------");
    puts("Vvedite nomer grupi dlya srednego balla");
    scanf("%d",&x);
    for (i=0;i<STUDS;i++)
    {
 
        if (stud[i].group == x)
        {
            sm+=(stud[i].sum/10); //суммируем средние баллы студентов
            gcnt++; //считаем количество студентов в данной группе
        }
    }
    printf("Sredball: %d\n",sm/gcnt);
    return 0;
}

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

  1. Включаем необходимые заголовочные файлы для работы с I/O и строками
  2. Объявляем структуру Student для хранения информации о студентах, включающую группу, имя, массив оценок по экзаменам и зачетам, а также переменную для подсчета суммы оценок
  3. В функции main объявляем массив stud типа Student для хранения информации о студентах
  4. Задаем константу STUDS для определения количества студентов
  5. Используем цикл for для заполнения информации о каждом студенте, включая его имя, фамилию и оценки по экзаменам и зачетам
  6. Используем printf для вывода информации о каждом студенте в формате Nomer grupi:, Familiya:
  7. Используем scanf для считывания информации о группе и имени студента
  8. Используем цикл for для заполнения оценок по экзаменам и зачетам
  9. Проверяем средний балл студента, и если он меньше тройки, выводим информацию о нем
  10. Запрашиваем номер группы для вычисления среднего балла
  11. Используем цикл for для подсчета среднего балла студентов в выбранной группе
  12. Выводим средний балл студентов в выбранной группе

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


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

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

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