#include <stdio.h>
#include <string.h>
#define MAX 100
typedef struct {
char surname[ 50 ] ;
char name[ 50 ] ;
char patronymic[ 50 ] ;
char birth_date[ 11 ] ; // формат "YYYY-MM-DD"
char address[ 100 ] ;
char phone[ 20 ] ;
char faculty[ 50 ] ;
int course;
} Student;
// Функция установки данных
void set_student( Student * s, const char * surname, const char * name, const char * patronymic,
const char * birth_date, const char * address, const char * phone,
const char * faculty, int course) {
strcpy ( s
-> patronymic
, patronymic
) ; strcpy ( s
-> birth_date
, birth_date
) ; s-> course = course;
}
// Функция отображения одного студента
void show_student( const Student * s) {
printf ( "ФИО: %s %s %s\n " , s
-> surname
, s
-> name
, s
-> patronymic
) ; printf ( "Дата рождения: %s\n " , s
-> birth_date
) ; printf ( "Адрес: %s\n " , s
-> address
) ; printf ( "Телефон: %s\n " , s
-> phone
) ; printf ( "Факультет: %s\n " , s
-> faculty
) ; printf ( "Курс: %d\n " , s
-> course
) ; printf ( "-------------------------------------\n " ) ; }
// Получить год рождения
int get_birth_year( const Student * s) {
int year;
sscanf ( s
-> birth_date
, "%d" , & year
) ; // Считываем только год return year;
}
// Печать студентов заданного факультета
void print_by_faculty( const Student students[ ] , int n, const char * faculty) {
printf ( "\n Студенты факультета %s:\n " , faculty
) ; for ( int i = 0 ; i < n; i++ ) {
if ( strcmp ( students
[ i
] .
faculty , faculty
) == 0 ) { show_student( & students[ i] ) ;
}
}
}
// Печать студентов по факультетам и курсам
void print_by_faculty_and_course( const Student students[ ] , int n) {
printf ( "\n Студенты по факультетам и курсам:\n " ) ; for ( int i = 0 ; i < n; i++ ) {
printf ( "Факультет: %s, Курс: %d\n " , students
[ i
] .
faculty , students
[ i
] .
course ) ; show_student( & students[ i] ) ;
}
}
// Печать студентов, родившихся после заданного года
void print_born_after_year( const Student students[ ] , int n, int year) {
printf ( "\n Студенты, родившиеся после %d года:\n " , year
) ; for ( int i = 0 ; i < n; i++ ) {
if ( get_birth_year( & students[ i] ) > year) {
show_student( & students[ i] ) ;
}
}
}
int main( ) {
Student students[ MAX] ;
int n = 3 ; // Количество студентов (для примера)
set_student( & students[ 0 ] , "Иванов" , "Иван" , "Иванович" , "2002-05-14" , "г. Москва" , "+71234567890" , "Физика" , 2 ) ;
set_student( & students[ 1 ] , "Петров" , "Петр" , "Петрович" , "2001-03-22" , "г. Санкт-Петербург" , "+79876543210" , "Информатика" , 3 ) ;
set_student( & students[ 2 ] , "Сидоров" , "Сидор" , "Сидорович" , "2003-12-01" , "г. Казань" , "+79991112233" , "Физика" , 1 ) ;
print_by_faculty( students, n, "Физика" ) ;
print_by_faculty_and_course( students, n) ;
print_born_after_year( students, n, 2001 ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNkZWZpbmUgTUFYIDEwMAoKdHlwZWRlZiBzdHJ1Y3QgewogICAgY2hhciBzdXJuYW1lWzUwXTsKICAgIGNoYXIgbmFtZVs1MF07CiAgICBjaGFyIHBhdHJvbnltaWNbNTBdOwogICAgY2hhciBiaXJ0aF9kYXRlWzExXTsgLy8g0YTQvtGA0LzQsNGCICJZWVlZLU1NLUREIgogICAgY2hhciBhZGRyZXNzWzEwMF07CiAgICBjaGFyIHBob25lWzIwXTsKICAgIGNoYXIgZmFjdWx0eVs1MF07CiAgICBpbnQgY291cnNlOwp9IFN0dWRlbnQ7CgovLyDQpNGD0L3QutGG0LjRjyDRg9GB0YLQsNC90L7QstC60Lgg0LTQsNC90L3Ri9GFCnZvaWQgc2V0X3N0dWRlbnQoU3R1ZGVudCAqcywgY29uc3QgY2hhciAqc3VybmFtZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqcGF0cm9ueW1pYywKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpiaXJ0aF9kYXRlLCBjb25zdCBjaGFyICphZGRyZXNzLCBjb25zdCBjaGFyICpwaG9uZSwKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmYWN1bHR5LCBpbnQgY291cnNlKSB7CiAgICBzdHJjcHkocy0+c3VybmFtZSwgc3VybmFtZSk7CiAgICBzdHJjcHkocy0+bmFtZSwgbmFtZSk7CiAgICBzdHJjcHkocy0+cGF0cm9ueW1pYywgcGF0cm9ueW1pYyk7CiAgICBzdHJjcHkocy0+YmlydGhfZGF0ZSwgYmlydGhfZGF0ZSk7CiAgICBzdHJjcHkocy0+YWRkcmVzcywgYWRkcmVzcyk7CiAgICBzdHJjcHkocy0+cGhvbmUsIHBob25lKTsKICAgIHN0cmNweShzLT5mYWN1bHR5LCBmYWN1bHR5KTsKICAgIHMtPmNvdXJzZSA9IGNvdXJzZTsKfQoKLy8g0KTRg9C90LrRhtC40Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRjyDQvtC00L3QvtCz0L4g0YHRgtGD0LTQtdC90YLQsAp2b2lkIHNob3dfc3R1ZGVudChjb25zdCBTdHVkZW50ICpzKSB7CiAgICBwcmludGYoItCk0JjQnjogJXMgJXMgJXNcbiIsIHMtPnN1cm5hbWUsIHMtPm5hbWUsIHMtPnBhdHJvbnltaWMpOwogICAgcHJpbnRmKCLQlNCw0YLQsCDRgNC+0LbQtNC10L3QuNGPOiAlc1xuIiwgcy0+YmlydGhfZGF0ZSk7CiAgICBwcmludGYoItCQ0LTRgNC10YE6ICVzXG4iLCBzLT5hZGRyZXNzKTsKICAgIHByaW50Zigi0KLQtdC70LXRhNC+0L06ICVzXG4iLCBzLT5waG9uZSk7CiAgICBwcmludGYoItCk0LDQutGD0LvRjNGC0LXRgjogJXNcbiIsIHMtPmZhY3VsdHkpOwogICAgcHJpbnRmKCLQmtGD0YDRgTogJWRcbiIsIHMtPmNvdXJzZSk7CiAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwp9CgovLyDQn9C+0LvRg9GH0LjRgtGMINCz0L7QtCDRgNC+0LbQtNC10L3QuNGPCmludCBnZXRfYmlydGhfeWVhcihjb25zdCBTdHVkZW50ICpzKSB7CiAgICBpbnQgeWVhcjsKICAgIHNzY2FuZihzLT5iaXJ0aF9kYXRlLCAiJWQiLCAmeWVhcik7IC8vINCh0YfQuNGC0YvQstCw0LXQvCDRgtC+0LvRjNC60L4g0LPQvtC0CiAgICByZXR1cm4geWVhcjsKfQoKLy8g0J/QtdGH0LDRgtGMINGB0YLRg9C00LXQvdGC0L7QsiDQt9Cw0LTQsNC90L3QvtCz0L4g0YTQsNC60YPQu9GM0YLQtdGC0LAKdm9pZCBwcmludF9ieV9mYWN1bHR5KGNvbnN0IFN0dWRlbnQgc3R1ZGVudHNbXSwgaW50IG4sIGNvbnN0IGNoYXIgKmZhY3VsdHkpIHsKICAgIHByaW50ZigiXG7QodGC0YPQtNC10L3RgtGLINGE0LDQutGD0LvRjNGC0LXRgtCwICVzOlxuIiwgZmFjdWx0eSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGlmIChzdHJjbXAoc3R1ZGVudHNbaV0uZmFjdWx0eSwgZmFjdWx0eSkgPT0gMCkgewogICAgICAgICAgICBzaG93X3N0dWRlbnQoJnN0dWRlbnRzW2ldKTsKICAgICAgICB9CiAgICB9Cn0KCi8vINCf0LXRh9Cw0YLRjCDRgdGC0YPQtNC10L3RgtC+0LIg0L/QviDRhNCw0LrRg9C70YzRgtC10YLQsNC8INC4INC60YPRgNGB0LDQvAp2b2lkIHByaW50X2J5X2ZhY3VsdHlfYW5kX2NvdXJzZShjb25zdCBTdHVkZW50IHN0dWRlbnRzW10sIGludCBuKSB7CiAgICBwcmludGYoIlxu0KHRgtGD0LTQtdC90YLRiyDQv9C+INGE0LDQutGD0LvRjNGC0LXRgtCw0Lwg0Lgg0LrRg9GA0YHQsNC8OlxuIik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIHByaW50Zigi0KTQsNC60YPQu9GM0YLQtdGCOiAlcywg0JrRg9GA0YE6ICVkXG4iLCBzdHVkZW50c1tpXS5mYWN1bHR5LCBzdHVkZW50c1tpXS5jb3Vyc2UpOwogICAgICAgIHNob3dfc3R1ZGVudCgmc3R1ZGVudHNbaV0pOwogICAgfQp9CgovLyDQn9C10YfQsNGC0Ywg0YHRgtGD0LTQtdC90YLQvtCyLCDRgNC+0LTQuNCy0YjQuNGF0YHRjyDQv9C+0YHQu9C1INC30LDQtNCw0L3QvdC+0LPQviDQs9C+0LTQsAp2b2lkIHByaW50X2Jvcm5fYWZ0ZXJfeWVhcihjb25zdCBTdHVkZW50IHN0dWRlbnRzW10sIGludCBuLCBpbnQgeWVhcikgewogICAgcHJpbnRmKCJcbtCh0YLRg9C00LXQvdGC0YssINGA0L7QtNC40LLRiNC40LXRgdGPINC/0L7RgdC70LUgJWQg0LPQvtC00LA6XG4iLCB5ZWFyKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgaWYgKGdldF9iaXJ0aF95ZWFyKCZzdHVkZW50c1tpXSkgPiB5ZWFyKSB7CiAgICAgICAgICAgIHNob3dfc3R1ZGVudCgmc3R1ZGVudHNbaV0pOwogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBTdHVkZW50IHN0dWRlbnRzW01BWF07CiAgICBpbnQgbiA9IDM7IC8vINCa0L7Qu9C40YfQtdGB0YLQstC+INGB0YLRg9C00LXQvdGC0L7QsiAo0LTQu9GPINC/0YDQuNC80LXRgNCwKQoKICAgIHNldF9zdHVkZW50KCZzdHVkZW50c1swXSwgItCY0LLQsNC90L7QsiIsICLQmNCy0LDQvSIsICLQmNCy0LDQvdC+0LLQuNGHIiwgIjIwMDItMDUtMTQiLCAi0LMuINCc0L7RgdC60LLQsCIsICIrNzEyMzQ1Njc4OTAiLCAi0KTQuNC30LjQutCwIiwgMik7CiAgICBzZXRfc3R1ZGVudCgmc3R1ZGVudHNbMV0sICLQn9C10YLRgNC+0LIiLCAi0J/QtdGC0YAiLCAi0J/QtdGC0YDQvtCy0LjRhyIsICIyMDAxLTAzLTIyIiwgItCzLiDQodCw0L3QutGCLdCf0LXRgtC10YDQsdGD0YDQsyIsICIrNzk4NzY1NDMyMTAiLCAi0JjQvdGE0L7RgNC80LDRgtC40LrQsCIsIDMpOwogICAgc2V0X3N0dWRlbnQoJnN0dWRlbnRzWzJdLCAi0KHQuNC00L7RgNC+0LIiLCAi0KHQuNC00L7RgCIsICLQodC40LTQvtGA0L7QstC40YciLCAiMjAwMy0xMi0wMSIsICLQsy4g0JrQsNC30LDQvdGMIiwgIis3OTk5MTExMjIzMyIsICLQpNC40LfQuNC60LAiLCAxKTsKCiAgICBwcmludF9ieV9mYWN1bHR5KHN0dWRlbnRzLCBuLCAi0KTQuNC30LjQutCwIik7CiAgICBwcmludF9ieV9mYWN1bHR5X2FuZF9jb3Vyc2Uoc3R1ZGVudHMsIG4pOwogICAgcHJpbnRfYm9ybl9hZnRlcl95ZWFyKHN0dWRlbnRzLCBuLCAyMDAxKTsKCiAgICByZXR1cm4gMDsKfQo=