Вывести фамилии неуспевающих студентов с указанием номеров групп - 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для подсчета среднего балла студентов в выбранной группе - Выводим средний балл студентов в выбранной группе