#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
) ; // Исправлено с sumname на surname 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
) ; }
}
int main( ) {
Student students[ MAX_STUDENTS] ;
int n = 3 ;
// Инициализация студентов
set_student( & students[ 0 ] , "Иванов" , "Иван" , "Иванович" , "2002-05-14" ,
"г. Москва, ул. Ленина, 10" , "+71234567890" , "Физика" , 2 ) ;
set_student( & students[ 1 ] , "Петров" , "Петр" , "Петрович" , "2001-03-22" ,
"г. Санкт-Петербург, Невский пр., 20" , "+79876543210" , "Информатика" , 3 ) ;
set_student( & students[ 2 ] , "Сидоров" , "Сидор" , "Сидорович" , "2003-12-01" ,
"г. Казань, ул. Баумана, 5" , "+79991112233" , "Физика" , 1 ) ;
// Пример использования
print_by_faculty( students, n, "Информатика" ) ; // Выведет только Петрова
print_by_faculty( students, n, "Физика" ) ; // Выведет Иванова и Сидорова
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKI2RlZmluZSBNQVhfU1RVREVOVFMgMTAwCiNkZWZpbmUgTUFYX1NUUklOR19MRU4gNTAKCnR5cGVkZWYgc3RydWN0IHsKICAgIGNoYXIgc3VybmFtZVtNQVhfU1RSSU5HX0xFTl07CiAgICBjaGFyIG5hbWVbTUFYX1NUUklOR19MRU5dOwogICAgY2hhciBwYXRyb255bWljW01BWF9TVFJJTkdfTEVOXTsKICAgIGNoYXIgYmlydGhfZGF0ZVsxMV07IC8vINGE0L7RgNC80LDRgiAiWVlZWS1NTS1ERCIKICAgIGNoYXIgYWRkcmVzc1sxMDBdOwogICAgY2hhciBwaG9uZVsyMF07CiAgICBjaGFyIGZhY3VsdHlbTUFYX1NUUklOR19MRU5dOwogICAgaW50IGNvdXJzZTsKfSBTdHVkZW50OwoKLy8g0JHQtdC30L7Qv9Cw0YHQvdC+0LUg0LrQvtC/0LjRgNC+0LLQsNC90LjQtSDRgdGC0YDQvtC6CnZvaWQgc2FmZV9zdHJjcHkoY2hhciogZGVzdCwgY29uc3QgY2hhciogc3JjLCBzaXplX3QgZGVzdF9zaXplKSB7CiAgICBzdHJuY3B5KGRlc3QsIHNyYywgZGVzdF9zaXplIC0gMSk7CiAgICBkZXN0W2Rlc3Rfc2l6ZSAtIDFdID0gJ1wwJzsKfQoKLy8g0KTRg9C90LrRhtC40Y8g0LjQvdC40YbQuNCw0LvQuNC30LDRhtC40Lgg0YHRgtGD0LTQtdC90YLQsAp2b2lkIHNldF9zdHVkZW50KFN0dWRlbnQgKnMsIGNvbnN0IGNoYXIgKnN1cm5hbWUsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnBhdHJvbnltaWMsCiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYmlydGhfZGF0ZSwgY29uc3QgY2hhciAqYWRkcmVzcywgY29uc3QgY2hhciAqcGhvbmUsCiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmFjdWx0eSwgaW50IGNvdXJzZSkgewogICAgc2FmZV9zdHJjcHkocy0+c3VybmFtZSwgc3VybmFtZSwgc2l6ZW9mKHMtPnN1cm5hbWUpKTsKICAgIHNhZmVfc3RyY3B5KHMtPm5hbWUsIG5hbWUsIHNpemVvZihzLT5uYW1lKSk7CiAgICBzYWZlX3N0cmNweShzLT5wYXRyb255bWljLCBwYXRyb255bWljLCBzaXplb2Yocy0+cGF0cm9ueW1pYykpOwogICAgc2FmZV9zdHJjcHkocy0+YmlydGhfZGF0ZSwgYmlydGhfZGF0ZSwgc2l6ZW9mKHMtPmJpcnRoX2RhdGUpKTsKICAgIHNhZmVfc3RyY3B5KHMtPmFkZHJlc3MsIGFkZHJlc3MsIHNpemVvZihzLT5hZGRyZXNzKSk7CiAgICBzYWZlX3N0cmNweShzLT5waG9uZSwgcGhvbmUsIHNpemVvZihzLT5waG9uZSkpOwogICAgc2FmZV9zdHJjcHkocy0+ZmFjdWx0eSwgZmFjdWx0eSwgc2l6ZW9mKHMtPmZhY3VsdHkpKTsKICAgIHMtPmNvdXJzZSA9IGNvdXJzZTsKfQoKLy8g0KTRg9C90LrRhtC40Y8g0LLRi9Cy0L7QtNCwINC40L3RhNC+0YDQvNCw0YbQuNC4INC+INGB0YLRg9C00LXQvdGC0LUgKNC40YHQv9GA0LDQstC70LXQvdC90LDRjykKdm9pZCBzaG93X3N0dWRlbnQoY29uc3QgU3R1ZGVudCAqcykgewogICAgcHJpbnRmKCLQpNCY0J46ICVzICVzICVzXG4iLCBzLT5zdXJuYW1lLCBzLT5uYW1lLCBzLT5wYXRyb255bWljKTsgLy8g0JjRgdC/0YDQsNCy0LvQtdC90L4g0YEgc3VtbmFtZSDQvdCwIHN1cm5hbWUKICAgIHByaW50Zigi0JTQsNGC0LAg0YDQvtC20LTQtdC90LjRjzogJXNcbiIsIHMtPmJpcnRoX2RhdGUpOwogICAgcHJpbnRmKCLQkNC00YDQtdGBOiAlc1xuIiwgcy0+YWRkcmVzcyk7CiAgICBwcmludGYoItCi0LXQu9C10YTQvtC9OiAlc1xuIiwgcy0+cGhvbmUpOwogICAgcHJpbnRmKCLQpNCw0LrRg9C70YzRgtC10YI6ICVzXG4iLCBzLT5mYWN1bHR5KTsKICAgIHByaW50Zigi0JrRg9GA0YE6ICVkXG4iLCBzLT5jb3Vyc2UpOwogICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKfQoKLy8g0J/QvtC70YPRh9C10L3QuNC1INCz0L7QtNCwINGA0L7QttC00LXQvdC40Y8g0LjQtyDQtNCw0YLRiwppbnQgZ2V0X2JpcnRoX3llYXIoY29uc3QgU3R1ZGVudCAqcykgewogICAgY2hhciB5ZWFyX3N0cls1XTsKICAgIHN0cm5jcHkoeWVhcl9zdHIsIHMtPmJpcnRoX2RhdGUsIDQpOwogICAgeWVhcl9zdHJbNF0gPSAnXDAnOwogICAgcmV0dXJuIGF0b2koeWVhcl9zdHIpOwp9CgovLyDQktGL0LLQvtC0INGB0YLRg9C00LXQvdGC0L7QsiDQv9C+INGE0LDQutGD0LvRjNGC0LXRgtGDCnZvaWQgcHJpbnRfYnlfZmFjdWx0eShjb25zdCBTdHVkZW50IHN0dWRlbnRzW10sIGludCBuLCBjb25zdCBjaGFyICpmYWN1bHR5KSB7CiAgICBwcmludGYoIlxu0KHRgtGD0LTQtdC90YLRiyDRhNCw0LrRg9C70YzRgtC10YLQsCAlczpcbiIsIGZhY3VsdHkpOwogICAgaW50IGZvdW5kID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgaWYgKHN0cmNtcChzdHVkZW50c1tpXS5mYWN1bHR5LCBmYWN1bHR5KSA9PSAwKSB7CiAgICAgICAgICAgIHNob3dfc3R1ZGVudCgmc3R1ZGVudHNbaV0pOwogICAgICAgICAgICBmb3VuZCA9IDE7CiAgICAgICAgfQogICAgfQogICAgaWYgKCFmb3VuZCkgewogICAgICAgIHByaW50Zigi0KHRgtGD0LTQtdC90YLQvtCyINC90LAg0YTQsNC60YPQu9GM0YLQtdGC0LUgJyVzJyDQvdC1INC90LDQudC00LXQvdC+LlxuIiwgZmFjdWx0eSk7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgU3R1ZGVudCBzdHVkZW50c1tNQVhfU1RVREVOVFNdOwogICAgaW50IG4gPSAzOwoKICAgIC8vINCY0L3QuNGG0LjQsNC70LjQt9Cw0YbQuNGPINGB0YLRg9C00LXQvdGC0L7QsgogICAgc2V0X3N0dWRlbnQoJnN0dWRlbnRzWzBdLCAi0JjQstCw0L3QvtCyIiwgItCY0LLQsNC9IiwgItCY0LLQsNC90L7QstC40YciLCAiMjAwMi0wNS0xNCIsIAogICAgICAgICAgICAgICAi0LMuINCc0L7RgdC60LLQsCwg0YPQuy4g0JvQtdC90LjQvdCwLCAxMCIsICIrNzEyMzQ1Njc4OTAiLCAi0KTQuNC30LjQutCwIiwgMik7CiAgICBzZXRfc3R1ZGVudCgmc3R1ZGVudHNbMV0sICLQn9C10YLRgNC+0LIiLCAi0J/QtdGC0YAiLCAi0J/QtdGC0YDQvtCy0LjRhyIsICIyMDAxLTAzLTIyIiwgCiAgICAgICAgICAgICAgICLQsy4g0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMsINCd0LXQstGB0LrQuNC5INC/0YAuLCAyMCIsICIrNzk4NzY1NDMyMTAiLCAi0JjQvdGE0L7RgNC80LDRgtC40LrQsCIsIDMpOwogICAgc2V0X3N0dWRlbnQoJnN0dWRlbnRzWzJdLCAi0KHQuNC00L7RgNC+0LIiLCAi0KHQuNC00L7RgCIsICLQodC40LTQvtGA0L7QstC40YciLCAiMjAwMy0xMi0wMSIsIAogICAgICAgICAgICAgICAi0LMuINCa0LDQt9Cw0L3RjCwg0YPQuy4g0JHQsNGD0LzQsNC90LAsIDUiLCAiKzc5OTkxMTEyMjMzIiwgItCk0LjQt9C40LrQsCIsIDEpOwoKICAgIC8vINCf0YDQuNC80LXRgCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjwogICAgcHJpbnRfYnlfZmFjdWx0eShzdHVkZW50cywgbiwgItCY0L3RhNC+0YDQvNCw0YLQuNC60LAiKTsgLy8g0JLRi9Cy0LXQtNC10YIg0YLQvtC70YzQutC+INCf0LXRgtGA0L7QstCwCiAgICBwcmludF9ieV9mYWN1bHR5KHN0dWRlbnRzLCBuLCAi0KTQuNC30LjQutCwIik7ICAgIC8vINCS0YvQstC10LTQtdGCINCY0LLQsNC90L7QstCwINC4INCh0LjQtNC+0YDQvtCy0LAKCiAgICByZXR1cm4gMDsKfQ==