#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, 2003 ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNkZWZpbmUgTUFYIDEwMAoKdHlwZWRlZiBzdHJ1Y3QgewogICAgY2hhciBzdXJuYW1lWzUwXTsKICAgIGNoYXIgbmFtZVs1MF07CiAgICBjaGFyIHBhdHJvbnltaWNbNTBdOwogICAgY2hhciBiaXJ0aF9kYXRlWzExXTsgLy8g0YTQvtGA0LzQsNGCICJZWVlZLU1NLUREIgogICAgY2hhciBhZGRyZXNzWzEwMF07CiAgICBjaGFyIHBob25lWzIwXTsKICAgIGNoYXIgZmFjdWx0eVs1MF07CiAgICBpbnQgY291cnNlOwp9IFN0dWRlbnQ7CgovLyDQpNGD0L3QutGG0LjRjyDRg9GB0YLQsNC90L7QstC60Lgg0LTQsNC90L3Ri9GFCnZvaWQgc2V0X3N0dWRlbnQoU3R1ZGVudCAqcywgY29uc3QgY2hhciAqc3VybmFtZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqcGF0cm9ueW1pYywKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpiaXJ0aF9kYXRlLCBjb25zdCBjaGFyICphZGRyZXNzLCBjb25zdCBjaGFyICpwaG9uZSwKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmYWN1bHR5LCBpbnQgY291cnNlKSB7CiAgICBzdHJjcHkocy0+c3VybmFtZSwgc3VybmFtZSk7CiAgICBzdHJjcHkocy0+bmFtZSwgbmFtZSk7CiAgICBzdHJjcHkocy0+cGF0cm9ueW1pYywgcGF0cm9ueW1pYyk7CiAgICBzdHJjcHkocy0+YmlydGhfZGF0ZSwgYmlydGhfZGF0ZSk7CiAgICBzdHJjcHkocy0+YWRkcmVzcywgYWRkcmVzcyk7CiAgICBzdHJjcHkocy0+cGhvbmUsIHBob25lKTsKICAgIHN0cmNweShzLT5mYWN1bHR5LCBmYWN1bHR5KTsKICAgIHMtPmNvdXJzZSA9IGNvdXJzZTsKfQoKdm9pZCBzaG93X3N0dWRlbnQoY29uc3QgU3R1ZGVudCAqcykgewogICAgcHJpbnRmKCLQpNCY0J46ICVzICVzICVzXG4iLCBzLT5zdXJuYW1lLCBzLT5uYW1lLCBzLT5wYXRyb255bWljKTsKICAgIHByaW50Zigi0JTQsNGC0LAg0YDQvtC20LTQtdC90LjRjzogJXNcbiIsIHMtPmJpcnRoX2RhdGUpOwogICAgcHJpbnRmKCLQkNC00YDQtdGBOiAlc1xuIiwgcy0+YWRkcmVzcyk7CiAgICBwcmludGYoItCi0LXQu9C10YTQvtC9OiAlc1xuIiwgcy0+cGhvbmUpOwogICAgcHJpbnRmKCLQpNCw0LrRg9C70YzRgtC10YI6ICVzXG4iLCBzLT5mYWN1bHR5KTsKICAgIHByaW50Zigi0JrRg9GA0YE6ICVkXG4iLCBzLT5jb3Vyc2UpOwogICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKfQoKaW50IGdldF9iaXJ0aF95ZWFyKGNvbnN0IFN0dWRlbnQgKnMpIHsKICAgIGludCB5ZWFyOwogICAgc3NjYW5mKHMtPmJpcnRoX2RhdGUsICIlZCIsICZ5ZWFyKTsgLy8g0KHRh9C40YLRi9Cy0LDQtdC8INGC0L7Qu9GM0LrQviDQs9C+0LQKICAgIHJldHVybiB5ZWFyOwp9CgoKdm9pZCBwcmludF9ieV9mYWN1bHR5KGNvbnN0IFN0dWRlbnQgc3R1ZGVudHNbXSwgaW50IG4sIGNvbnN0IGNoYXIgKmZhY3VsdHkpIHsKICAgIHByaW50ZigiXG7QodGC0YPQtNC10L3RgtGLINGE0LDQutGD0LvRjNGC0LXRgtCwICVzOlxuIiwgZmFjdWx0eSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGlmIChzdHJjbXAoc3R1ZGVudHNbaV0uZmFjdWx0eSwgZmFjdWx0eSkgPT0gMCkgewogICAgICAgICAgICBzaG93X3N0dWRlbnQoJnN0dWRlbnRzW2ldKTsKICAgICAgICB9CiAgICB9Cn0KCgp2b2lkIHByaW50X2J5X2ZhY3VsdHlfYW5kX2NvdXJzZShjb25zdCBTdHVkZW50IHN0dWRlbnRzW10sIGludCBuKSB7CiAgICBwcmludGYoIlxu0KHRgtGD0LTQtdC90YLRiyDQv9C+INGE0LDQutGD0LvRjNGC0LXRgtCw0Lwg0Lgg0LrRg9GA0YHQsNC8OlxuIik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIHByaW50Zigi0KTQsNC60YPQu9GM0YLQtdGCOiAlcywg0JrRg9GA0YE6ICVkXG4iLCBzdHVkZW50c1tpXS5mYWN1bHR5LCBzdHVkZW50c1tpXS5jb3Vyc2UpOwogICAgICAgIHNob3dfc3R1ZGVudCgmc3R1ZGVudHNbaV0pOwogICAgfQp9CgoKdm9pZCBwcmludF9ib3JuX2FmdGVyX3llYXIoY29uc3QgU3R1ZGVudCBzdHVkZW50c1tdLCBpbnQgbiwgaW50IHllYXIpIHsKICAgIHByaW50ZigiXG7QodGC0YPQtNC10L3RgtGLLCDRgNC+0LTQuNCy0YjQuNC10YHRjyDQv9C+0YHQu9C1ICVkINCz0L7QtNCwOlxuIiwgeWVhcik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGlmIChnZXRfYmlydGhfeWVhcigmc3R1ZGVudHNbaV0pID4geWVhcikgewogICAgICAgICAgICBzaG93X3N0dWRlbnQoJnN0dWRlbnRzW2ldKTsKICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgU3R1ZGVudCBzdHVkZW50c1tNQVhdOwogICAgaW50IG4gPSAzOyAvLyDQmtC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0YPQtNC10L3RgtC+0LIgKNC00LvRjyDQv9GA0LjQvNC10YDQsCkKCiAgICBzZXRfc3R1ZGVudCgmc3R1ZGVudHNbMF0sICLQmNCy0LDQvdC+0LIiLCAi0JjQstCw0L0iLCAi0JjQstCw0L3QvtCy0LjRhyIsICIyMDAyLTA1LTE0IiwgItCzLiDQnNC+0YHQutCy0LAiLCAiKzcxMjM0NTY3ODkwIiwgItCk0LjQt9C40LrQsCIsIDIpOwogICAgc2V0X3N0dWRlbnQoJnN0dWRlbnRzWzFdLCAi0J/QtdGC0YDQvtCyIiwgItCf0LXRgtGAIiwgItCf0LXRgtGA0L7QstC40YciLCAiMjAwMS0wMy0yMiIsICLQsy4g0KHQsNC90LrRgi3Qn9C10YLQtdGA0LHRg9GA0LMiLCAiKzc5ODc2NTQzMjEwIiwgItCY0L3RhNC+0YDQvNCw0YLQuNC60LAiLCAzKTsKICAgIHNldF9zdHVkZW50KCZzdHVkZW50c1syXSwgItCh0LjQtNC+0YDQvtCyIiwgItCh0LjQtNC+0YAiLCAi0KHQuNC00L7RgNC+0LLQuNGHIiwgIjIwMDMtMTItMDEiLCAi0LMuINCa0LDQt9Cw0L3RjCIsICIrNzk5OTExMTIyMzMiLCAi0KTQuNC30LjQutCwIiwgMSk7CgogICAgcHJpbnRfYnlfZmFjdWx0eShzdHVkZW50cywgbiwgItCk0LjQt9C40LrQsCIpOwogICAgcHJpbnRfYnlfZmFjdWx0eV9hbmRfY291cnNlKHN0dWRlbnRzLCBuKTsKICAgIHByaW50X2Jvcm5fYWZ0ZXJfeWVhcihzdHVkZW50cywgbiwgMjAwMyk7CgogICAgcmV0dXJuIDA7Cn0=