#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 ] ;
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
) ; int found = 0 ;
for ( int i = 0 ; i < n; i++ ) {
if ( strcmp ( students
[ i
] .
faculty , faculty
) == 0 ) { // Исправлено условие show_student( & students[ i] ) ;
found = 1 ;
}
}
if ( ! found) {
printf ( "Студентов факультета '%s' не найдено\n " , faculty
) ; }
}
void print_born_after_year( const Student students[ ] , int n, int year) {
printf ( "\n Студенты, родившиеся после %d года:\n " , year
) ; int found = 0 ;
for ( int i = 0 ; i < n; i++ ) {
if ( get_birth_year( & students[ i] ) > year) {
show_student( & students[ i] ) ;
found = 1 ;
}
}
if ( ! found) {
printf ( "Студентов, родившихся после %d года, не найдено\n " , year
) ; }
}
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, "Информатика" ) ; // Покажет только Петрова
print_by_faculty( students, n, "Физика" ) ; // Покажет Иванова и Сидорова
print_born_after_year( students, n, 2002 ) ; // Покажет только Сидорова
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKI2RlZmluZSBNQVhfU1RVREVOVFMgMTAwCiNkZWZpbmUgTUFYX1NUUklOR19MRU4gNTAKCnR5cGVkZWYgc3RydWN0IHsKICAgIGNoYXIgc3VybmFtZVtNQVhfU1RSSU5HX0xFTl07CiAgICBjaGFyIG5hbWVbTUFYX1NUUklOR19MRU5dOwogICAgY2hhciBwYXRyb255bWljW01BWF9TVFJJTkdfTEVOXTsKICAgIGNoYXIgYmlydGhfZGF0ZVsxMV07CiAgICBjaGFyIGFkZHJlc3NbMTAwXTsKICAgIGNoYXIgcGhvbmVbMjBdOwogICAgY2hhciBmYWN1bHR5W01BWF9TVFJJTkdfTEVOXTsKICAgIGludCBjb3Vyc2U7Cn0gU3R1ZGVudDsKCnZvaWQgc2FmZV9zdHJjcHkoY2hhciogZGVzdCwgY29uc3QgY2hhciogc3JjLCBzaXplX3QgZGVzdF9zaXplKSB7CiAgICBzdHJuY3B5KGRlc3QsIHNyYywgZGVzdF9zaXplIC0gMSk7CiAgICBkZXN0W2Rlc3Rfc2l6ZSAtIDFdID0gJ1wwJzsKfQoKdm9pZCBzZXRfc3R1ZGVudChTdHVkZW50ICpzLCBjb25zdCBjaGFyICpzdXJuYW1lLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpwYXRyb255bWljLAogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJpcnRoX2RhdGUsIGNvbnN0IGNoYXIgKmFkZHJlc3MsIGNvbnN0IGNoYXIgKnBob25lLAogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZhY3VsdHksIGludCBjb3Vyc2UpIHsKICAgIHNhZmVfc3RyY3B5KHMtPnN1cm5hbWUsIHN1cm5hbWUsIHNpemVvZihzLT5zdXJuYW1lKSk7CiAgICBzYWZlX3N0cmNweShzLT5uYW1lLCBuYW1lLCBzaXplb2Yocy0+bmFtZSkpOwogICAgc2FmZV9zdHJjcHkocy0+cGF0cm9ueW1pYywgcGF0cm9ueW1pYywgc2l6ZW9mKHMtPnBhdHJvbnltaWMpKTsKICAgIHNhZmVfc3RyY3B5KHMtPmJpcnRoX2RhdGUsIGJpcnRoX2RhdGUsIHNpemVvZihzLT5iaXJ0aF9kYXRlKSk7CiAgICBzYWZlX3N0cmNweShzLT5hZGRyZXNzLCBhZGRyZXNzLCBzaXplb2Yocy0+YWRkcmVzcykpOwogICAgc2FmZV9zdHJjcHkocy0+cGhvbmUsIHBob25lLCBzaXplb2Yocy0+cGhvbmUpKTsKICAgIHNhZmVfc3RyY3B5KHMtPmZhY3VsdHksIGZhY3VsdHksIHNpemVvZihzLT5mYWN1bHR5KSk7CiAgICBzLT5jb3Vyc2UgPSBjb3Vyc2U7Cn0KCnZvaWQgc2hvd19zdHVkZW50KGNvbnN0IFN0dWRlbnQgKnMpIHsKICAgIHByaW50Zigi0KTQmNCeOiAlcyAlcyAlc1xuIiwgcy0+c3VybmFtZSwgcy0+bmFtZSwgcy0+cGF0cm9ueW1pYyk7CiAgICBwcmludGYoItCU0LDRgtCwINGA0L7QttC00LXQvdC40Y86ICVzXG4iLCBzLT5iaXJ0aF9kYXRlKTsKICAgIHByaW50Zigi0JDQtNGA0LXRgTogJXNcbiIsIHMtPmFkZHJlc3MpOwogICAgcHJpbnRmKCLQotC10LvQtdGE0L7QvTogJXNcbiIsIHMtPnBob25lKTsKICAgIHByaW50Zigi0KTQsNC60YPQu9GM0YLQtdGCOiAlc1xuIiwgcy0+ZmFjdWx0eSk7CiAgICBwcmludGYoItCa0YPRgNGBOiAlZFxuIiwgcy0+Y291cnNlKTsKICAgIHByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7Cn0KCmludCBnZXRfYmlydGhfeWVhcihjb25zdCBTdHVkZW50ICpzKSB7CiAgICBjaGFyIHllYXJfc3RyWzVdOwogICAgc3RybmNweSh5ZWFyX3N0ciwgcy0+YmlydGhfZGF0ZSwgNCk7CiAgICB5ZWFyX3N0cls0XSA9ICdcMCc7CiAgICByZXR1cm4gYXRvaSh5ZWFyX3N0cik7Cn0KCnZvaWQgcHJpbnRfYnlfZmFjdWx0eShjb25zdCBTdHVkZW50IHN0dWRlbnRzW10sIGludCBuLCBjb25zdCBjaGFyICpmYWN1bHR5KSB7CiAgICBwcmludGYoIlxu0KHRgtGD0LTQtdC90YLRiyDRhNCw0LrRg9C70YzRgtC10YLQsCAlczpcbiIsIGZhY3VsdHkpOwogICAgaW50IGZvdW5kID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgaWYgKHN0cmNtcChzdHVkZW50c1tpXS5mYWN1bHR5LCBmYWN1bHR5KSA9PSAwKSB7ICAvLyDQmNGB0L/RgNCw0LLQu9C10L3QviDRg9GB0LvQvtCy0LjQtQogICAgICAgICAgICBzaG93X3N0dWRlbnQoJnN0dWRlbnRzW2ldKTsKICAgICAgICAgICAgZm91bmQgPSAxOwogICAgICAgIH0KICAgIH0KICAgIGlmICghZm91bmQpIHsKICAgICAgICBwcmludGYoItCh0YLRg9C00LXQvdGC0L7QsiDRhNCw0LrRg9C70YzRgtC10YLQsCAnJXMnINC90LUg0L3QsNC50LTQtdC90L5cbiIsIGZhY3VsdHkpOwogICAgfQp9Cgp2b2lkIHByaW50X2Jvcm5fYWZ0ZXJfeWVhcihjb25zdCBTdHVkZW50IHN0dWRlbnRzW10sIGludCBuLCBpbnQgeWVhcikgewogICAgcHJpbnRmKCJcbtCh0YLRg9C00LXQvdGC0YssINGA0L7QtNC40LLRiNC40LXRgdGPINC/0L7RgdC70LUgJWQg0LPQvtC00LA6XG4iLCB5ZWFyKTsKICAgIGludCBmb3VuZCA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGlmIChnZXRfYmlydGhfeWVhcigmc3R1ZGVudHNbaV0pID4geWVhcikgewogICAgICAgICAgICBzaG93X3N0dWRlbnQoJnN0dWRlbnRzW2ldKTsKICAgICAgICAgICAgZm91bmQgPSAxOwogICAgICAgIH0KICAgIH0KICAgIGlmICghZm91bmQpIHsKICAgICAgICBwcmludGYoItCh0YLRg9C00LXQvdGC0L7Qsiwg0YDQvtC00LjQstGI0LjRhdGB0Y8g0L/QvtGB0LvQtSAlZCDQs9C+0LTQsCwg0L3QtSDQvdCw0LnQtNC10L3QvlxuIiwgeWVhcik7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgU3R1ZGVudCBzdHVkZW50c1tNQVhfU1RVREVOVFNdOwogICAgaW50IG4gPSAzOwoKICAgIHNldF9zdHVkZW50KCZzdHVkZW50c1swXSwgItCY0LLQsNC90L7QsiIsICLQmNCy0LDQvSIsICLQmNCy0LDQvdC+0LLQuNGHIiwgIjIwMDItMDUtMTQiLCAKICAgICAgICAgICAgICAgItCzLiDQnNC+0YHQutCy0LAiLCAiKzcxMjM0NTY3ODkwIiwgItCk0LjQt9C40LrQsCIsIDIpOwogICAgc2V0X3N0dWRlbnQoJnN0dWRlbnRzWzFdLCAi0J/QtdGC0YDQvtCyIiwgItCf0LXRgtGAIiwgItCf0LXRgtGA0L7QstC40YciLCAiMjAwMS0wMy0yMiIsIAogICAgICAgICAgICAgICAi0LMuINCh0LDQvdC60YIt0J/QtdGC0LXRgNCx0YPRgNCzIiwgIis3OTg3NjU0MzIxMCIsICLQmNC90YTQvtGA0LzQsNGC0LjQutCwIiwgMyk7CiAgICBzZXRfc3R1ZGVudCgmc3R1ZGVudHNbMl0sICLQodC40LTQvtGA0L7QsiIsICLQodC40LTQvtGAIiwgItCh0LjQtNC+0YDQvtCy0LjRhyIsICIyMDAzLTEyLTAxIiwgCiAgICAgICAgICAgICAgICLQsy4g0JrQsNC30LDQvdGMIiwgIis3OTk5MTExMjIzMyIsICLQpNC40LfQuNC60LAiLCAxKTsKCiAgICAvLyDQotC10L/QtdGA0Ywg0LHRg9C00LXRgiDQutC+0YDRgNC10LrRgtC90L4g0YDQsNCx0L7RgtCw0YLRjAogICAgcHJpbnRfYnlfZmFjdWx0eShzdHVkZW50cywgbiwgItCY0L3RhNC+0YDQvNCw0YLQuNC60LAiKTsgLy8g0J/QvtC60LDQttC10YIg0YLQvtC70YzQutC+INCf0LXRgtGA0L7QstCwCiAgICBwcmludF9ieV9mYWN1bHR5KHN0dWRlbnRzLCBuLCAi0KTQuNC30LjQutCwIik7ICAgICAvLyDQn9C+0LrQsNC20LXRgiDQmNCy0LDQvdC+0LLQsCDQuCDQodC40LTQvtGA0L7QstCwCiAgICAKICAgIHByaW50X2Jvcm5fYWZ0ZXJfeWVhcihzdHVkZW50cywgbiwgMjAwMik7ICAgIC8vINCf0L7QutCw0LbQtdGCINGC0L7Qu9GM0LrQviDQodC40LTQvtGA0L7QstCwCgogICAgcmV0dXJuIDA7Cn0=