#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_STUDENTS 100
#define MAX_STRING_LEN 50
typedef struct {
char surname[ MAX_STRING_LEN] ;
char name[ MAX_STRING_LEN] ;
char patronymic[ MAX_STRING_LEN] ;
char birth_date[ 11 ] ; // формат "YYYY-MM-DD"
char address[ 100 ] ;
char phone[ 20 ] ;
char faculty[ MAX_STRING_LEN] ;
int course;
} Student;
void safe_strcpy( char * dest, const char * src, size_t dest_size) {
dest[ dest_size - 1 ] = '\0 ' ;
}
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) {
safe_strcpy( s-> surname, surname, sizeof ( s-> surname) ) ;
safe_strcpy( s-> name, name, sizeof ( s-> name) ) ;
safe_strcpy( s-> patronymic, patronymic, sizeof ( s-> patronymic) ) ;
safe_strcpy( s-> birth_date, birth_date, sizeof ( s-> birth_date) ) ;
safe_strcpy( s-> address, address, sizeof ( s-> address) ) ;
safe_strcpy( s-> phone, phone, sizeof ( s-> phone) ) ;
safe_strcpy( s-> faculty, faculty, sizeof ( s-> faculty) ) ;
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) {
char year_str[ 5 ] ;
strncpy ( year_str
, s
-> birth_date
, 4 ) ; year_str[ 4 ] = '\0 ' ;
}
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_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_STUDENTS] ;
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, "Информатика" ) ;
// Выводим студентов, родившихся после 2002 года (вместо 2001)
print_born_after_year( students, n, 2001 ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKI2RlZmluZSBNQVhfU1RVREVOVFMgMTAwCiNkZWZpbmUgTUFYX1NUUklOR19MRU4gNTAKCnR5cGVkZWYgc3RydWN0IHsKICAgIGNoYXIgc3VybmFtZVtNQVhfU1RSSU5HX0xFTl07CiAgICBjaGFyIG5hbWVbTUFYX1NUUklOR19MRU5dOwogICAgY2hhciBwYXRyb255bWljW01BWF9TVFJJTkdfTEVOXTsKICAgIGNoYXIgYmlydGhfZGF0ZVsxMV07IC8vINGE0L7RgNC80LDRgiAiWVlZWS1NTS1ERCIKICAgIGNoYXIgYWRkcmVzc1sxMDBdOwogICAgY2hhciBwaG9uZVsyMF07CiAgICBjaGFyIGZhY3VsdHlbTUFYX1NUUklOR19MRU5dOwogICAgaW50IGNvdXJzZTsKfSBTdHVkZW50OwoKdm9pZCBzYWZlX3N0cmNweShjaGFyKiBkZXN0LCBjb25zdCBjaGFyKiBzcmMsIHNpemVfdCBkZXN0X3NpemUpIHsKICAgIHN0cm5jcHkoZGVzdCwgc3JjLCBkZXN0X3NpemUgLSAxKTsKICAgIGRlc3RbZGVzdF9zaXplIC0gMV0gPSAnXDAnOwp9Cgp2b2lkIHNldF9zdHVkZW50KFN0dWRlbnQgKnMsIGNvbnN0IGNoYXIgKnN1cm5hbWUsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnBhdHJvbnltaWMsCiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYmlydGhfZGF0ZSwgY29uc3QgY2hhciAqYWRkcmVzcywgY29uc3QgY2hhciAqcGhvbmUsCiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmFjdWx0eSwgaW50IGNvdXJzZSkgewogICAgc2FmZV9zdHJjcHkocy0+c3VybmFtZSwgc3VybmFtZSwgc2l6ZW9mKHMtPnN1cm5hbWUpKTsKICAgIHNhZmVfc3RyY3B5KHMtPm5hbWUsIG5hbWUsIHNpemVvZihzLT5uYW1lKSk7CiAgICBzYWZlX3N0cmNweShzLT5wYXRyb255bWljLCBwYXRyb255bWljLCBzaXplb2Yocy0+cGF0cm9ueW1pYykpOwogICAgc2FmZV9zdHJjcHkocy0+YmlydGhfZGF0ZSwgYmlydGhfZGF0ZSwgc2l6ZW9mKHMtPmJpcnRoX2RhdGUpKTsKICAgIHNhZmVfc3RyY3B5KHMtPmFkZHJlc3MsIGFkZHJlc3MsIHNpemVvZihzLT5hZGRyZXNzKSk7CiAgICBzYWZlX3N0cmNweShzLT5waG9uZSwgcGhvbmUsIHNpemVvZihzLT5waG9uZSkpOwogICAgc2FmZV9zdHJjcHkocy0+ZmFjdWx0eSwgZmFjdWx0eSwgc2l6ZW9mKHMtPmZhY3VsdHkpKTsKICAgIHMtPmNvdXJzZSA9IGNvdXJzZTsKfQoKdm9pZCBzaG93X3N0dWRlbnQoY29uc3QgU3R1ZGVudCAqcykgewogICAgcHJpbnRmKCLQpNCY0J46ICVzICVzICVzXG4iLCBzLT5zdXJuYW1lLCBzLT5uYW1lLCBzLT5wYXRyb255bWljKTsKICAgIHByaW50Zigi0JTQsNGC0LAg0YDQvtC20LTQtdC90LjRjzogJXNcbiIsIHMtPmJpcnRoX2RhdGUpOwogICAgcHJpbnRmKCLQkNC00YDQtdGBOiAlc1xuIiwgcy0+YWRkcmVzcyk7CiAgICBwcmludGYoItCi0LXQu9C10YTQvtC9OiAlc1xuIiwgcy0+cGhvbmUpOwogICAgcHJpbnRmKCLQpNCw0LrRg9C70YzRgtC10YI6ICVzXG4iLCBzLT5mYWN1bHR5KTsKICAgIHByaW50Zigi0JrRg9GA0YE6ICVkXG4iLCBzLT5jb3Vyc2UpOwogICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKfQoKaW50IGdldF9iaXJ0aF95ZWFyKGNvbnN0IFN0dWRlbnQgKnMpIHsKICAgIGNoYXIgeWVhcl9zdHJbNV07CiAgICBzdHJuY3B5KHllYXJfc3RyLCBzLT5iaXJ0aF9kYXRlLCA0KTsKICAgIHllYXJfc3RyWzRdID0gJ1wwJzsKICAgIHJldHVybiBhdG9pKHllYXJfc3RyKTsKfQoKdm9pZCBwcmludF9ieV9mYWN1bHR5KGNvbnN0IFN0dWRlbnQgc3R1ZGVudHNbXSwgaW50IG4sIGNvbnN0IGNoYXIgKmZhY3VsdHkpIHsKICAgIHByaW50ZigiXG7QodGC0YPQtNC10L3RgtGLINGE0LDQutGD0LvRjNGC0LXRgtCwICVzOlxuIiwgZmFjdWx0eSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGlmIChzdHJjbXAoc3R1ZGVudHNbaV0uZmFjdWx0eSwgZmFjdWx0eSkgPT0gMCkgewogICAgICAgICAgICBzaG93X3N0dWRlbnQoJnN0dWRlbnRzW2ldKTsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgcHJpbnRfYm9ybl9hZnRlcl95ZWFyKGNvbnN0IFN0dWRlbnQgc3R1ZGVudHNbXSwgaW50IG4sIGludCB5ZWFyKSB7CiAgICBwcmludGYoIlxu0KHRgtGD0LTQtdC90YLRiywg0YDQvtC00LjQstGI0LjQtdGB0Y8g0L/QvtGB0LvQtSAlZCDQs9C+0LTQsDpcbiIsIHllYXIpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBpZiAoZ2V0X2JpcnRoX3llYXIoJnN0dWRlbnRzW2ldKSA+IHllYXIpIHsKICAgICAgICAgICAgc2hvd19zdHVkZW50KCZzdHVkZW50c1tpXSk7CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIFN0dWRlbnQgc3R1ZGVudHNbTUFYX1NUVURFTlRTXTsKICAgIGludCBuID0gMzsgLy8g0JrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtGD0LTQtdC90YLQvtCyCgogICAgc2V0X3N0dWRlbnQoJnN0dWRlbnRzWzBdLCAi0JjQstCw0L3QvtCyIiwgItCY0LLQsNC9IiwgItCY0LLQsNC90L7QstC40YciLCAiMjAwMi0wNS0xNCIsIAogICAgICAgICAgICAgICAi0LMuINCc0L7RgdC60LLQsCIsICIrNzEyMzQ1Njc4OTAiLCAi0KTQuNC30LjQutCwIiwgMik7CiAgICBzZXRfc3R1ZGVudCgmc3R1ZGVudHNbMV0sICLQn9C10YLRgNC+0LIiLCAi0J/QtdGC0YAiLCAi0J/QtdGC0YDQvtCy0LjRhyIsICIyMDAxLTAzLTIyIiwgCiAgICAgICAgICAgICAgICLQsy4g0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMiLCAiKzc5ODc2NTQzMjEwIiwgItCY0L3RhNC+0YDQvNCw0YLQuNC60LAiLCAzKTsKICAgIHNldF9zdHVkZW50KCZzdHVkZW50c1syXSwgItCh0LjQtNC+0YDQvtCyIiwgItCh0LjQtNC+0YAiLCAi0KHQuNC00L7RgNC+0LLQuNGHIiwgIjIwMDMtMTItMDEiLCAKICAgICAgICAgICAgICAgItCzLiDQmtCw0LfQsNC90YwiLCAiKzc5OTkxMTEyMjMzIiwgItCk0LjQt9C40LrQsCIsIDEpOwoKICAgIC8vINCS0YvQstC+0LTQuNC8INGC0L7Qu9GM0LrQviDRgdGC0YPQtNC10L3RgtC+0LIg0YTQsNC60YPQu9GM0YLQtdGC0LAgItCk0LjQt9C40LrQsCIKICAgIHByaW50X2J5X2ZhY3VsdHkoc3R1ZGVudHMsIG4sICLQmNC90YTQvtGA0LzQsNGC0LjQutCwIik7CgogICAgLy8g0JLRi9Cy0L7QtNC40Lwg0YHRgtGD0LTQtdC90YLQvtCyLCDRgNC+0LTQuNCy0YjQuNGF0YHRjyDQv9C+0YHQu9C1IDIwMDIg0LPQvtC00LAgKNCy0LzQtdGB0YLQviAyMDAxKQogICAgcHJpbnRfYm9ybl9hZnRlcl95ZWFyKHN0dWRlbnRzLCBuLCAyMDAxKTsKCiAgICByZXR1cm4gMDsKfQ==