Вывести фамилии неуспевающих студентов с указанием номеров групп - 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;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с I/O и строками
- Объявляем структуру
Student
для хранения информации о студентах, включающую группу, имя, массив оценок по экзаменам и зачетам, а также переменную для подсчета суммы оценок - В функции
main
объявляем массивstud
типаStudent
для хранения информации о студентах - Задаем константу
STUDS
для определения количества студентов - Используем цикл
for
для заполнения информации о каждом студенте, включая его имя, фамилию и оценки по экзаменам и зачетам - Используем
printf
для вывода информации о каждом студенте в форматеNomer grupi:
,Familiya:
- Используем
scanf
для считывания информации о группе и имени студента - Используем цикл
for
для заполнения оценок по экзаменам и зачетам - Проверяем средний балл студента, и если он меньше тройки, выводим информацию о нем
- Запрашиваем номер группы для вычисления среднего балла
- Используем цикл
for
для подсчета среднего балла студентов в выбранной группе - Выводим средний балл студентов в выбранной группе
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д