fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAX 100
  5.  
  6. typedef struct {
  7. char surname[50];
  8. char name[50];
  9. char patronymic[50];
  10. char birth_date[11]; // формат "YYYY-MM-DD"
  11. char address[100];
  12. char phone[20];
  13. char faculty[50];
  14. int course;
  15. } Student;
  16.  
  17. // Функция установки данных
  18. void set_student(Student *s, const char *surname, const char *name, const char *patronymic,
  19. const char *birth_date, const char *address, const char *phone,
  20. const char *faculty, int course) {
  21. strcpy(s->surname, surname);
  22. strcpy(s->name, name);
  23. strcpy(s->patronymic, patronymic);
  24. strcpy(s->birth_date, birth_date);
  25. strcpy(s->address, address);
  26. strcpy(s->phone, phone);
  27. strcpy(s->faculty, faculty);
  28. s->course = course;
  29. }
  30.  
  31. // Функция отображения одного студента
  32. void show_student(const Student *s) {
  33. printf("ФИО: %s %s %s\n", s->surname, s->name, s->patronymic);
  34. printf("Дата рождения: %s\n", s->birth_date);
  35. printf("Адрес: %s\n", s->address);
  36. printf("Телефон: %s\n", s->phone);
  37. printf("Факультет: %s\n", s->faculty);
  38. printf("Курс: %d\n", s->course);
  39. printf("-------------------------------------\n");
  40. }
  41.  
  42. // Получить год рождения
  43. int get_birth_year(const Student *s) {
  44. int year;
  45. sscanf(s->birth_date, "%d", &year); // Считываем только год
  46. return year;
  47. }
  48.  
  49. // Печать студентов заданного факультета
  50. void print_by_faculty(const Student students[], int n, const char *faculty) {
  51. printf("\nСтуденты факультета %s:\n", faculty);
  52. for (int i = 0; i < n; i++) {
  53. if (strcmp(students[i].faculty, faculty) == 0) {
  54. show_student(&students[i]);
  55. }
  56. }
  57. }
  58.  
  59. // Печать студентов по факультетам и курсам
  60. void print_by_faculty_and_course(const Student students[], int n) {
  61. printf("\nСтуденты по факультетам и курсам:\n");
  62. for (int i = 0; i < n; i++) {
  63. printf("Факультет: %s, Курс: %d\n", students[i].faculty, students[i].course);
  64. show_student(&students[i]);
  65. }
  66. }
  67.  
  68. // Печать студентов, родившихся после заданного года
  69. void print_born_after_year(const Student students[], int n, int year) {
  70. printf("\nСтуденты, родившиеся после %d года:\n", year);
  71. for (int i = 0; i < n; i++) {
  72. if (get_birth_year(&students[i]) > year) {
  73. show_student(&students[i]);
  74. }
  75. }
  76. }
  77.  
  78. int main() {
  79. Student students[MAX];
  80. int n = 3; // Количество студентов (для примера)
  81.  
  82. set_student(&students[0], "Иванов", "Иван", "Иванович", "2002-05-14", "г. Москва", "+71234567890", "Физика", 2);
  83. set_student(&students[1], "Петров", "Петр", "Петрович", "2001-03-22", "г. Санкт-Петербург", "+79876543210", "Информатика", 3);
  84. set_student(&students[2], "Сидоров", "Сидор", "Сидорович", "2003-12-01", "г. Казань", "+79991112233", "Физика", 1);
  85.  
  86. print_by_faculty(students, n, "Физика");
  87. print_by_faculty_and_course(students, n);
  88. print_born_after_year(students, n, 2001);
  89.  
  90. return 0;
  91. }
  92.  
Success #stdin #stdout 0.01s 5316KB
stdin
Standard input is empty
stdout
Студенты факультета Физика:
ФИО: Иванов Иван Иванович
Дата рождения: 2002-05-14
Адрес: г. Москва
Телефон: +71234567890
Факультет: Физика
Курс: 2
-------------------------------------
ФИО: Сидоров Сидор Сидорович
Дата рождения: 2003-12-01
Адрес: г. Казань
Телефон: +79991112233
Факультет: Физика
Курс: 1
-------------------------------------

Студенты по факультетам и курсам:
Факультет: Физика, Курс: 2
ФИО: Иванов Иван Иванович
Дата рождения: 2002-05-14
Адрес: г. Москва
Телефон: +71234567890
Факультет: Физика
Курс: 2
-------------------------------------
Факультет: Информатика, Курс: 3
ФИО: Петров Петр Петрович
Дата рождения: 2001-03-22
Адрес: г. Санкт-Петербург
Телефон: +79876543210
Факультет: Информатика
Курс: 3
-------------------------------------
Факультет: Физика, Курс: 1
ФИО: Сидоров Сидор Сидорович
Дата рождения: 2003-12-01
Адрес: г. Казань
Телефон: +79991112233
Факультет: Физика
Курс: 1
-------------------------------------

Студенты, родившиеся после 2001 года:
ФИО: Иванов Иван Иванович
Дата рождения: 2002-05-14
Адрес: г. Москва
Телефон: +71234567890
Факультет: Физика
Курс: 2
-------------------------------------
ФИО: Сидоров Сидор Сидорович
Дата рождения: 2003-12-01
Адрес: г. Казань
Телефон: +79991112233
Факультет: Физика
Курс: 1
-------------------------------------