#include <stdio.h>
#include <string.h>
#define MAX_BOOKS 100
typedef struct {
char author[ 50 ] ;
char title[ 100 ] ;
char publisher[ 50 ] ;
int year;
int num_pages;
} Book;
void set( Book* book, const char * author, const char * title, const char * publisher, int year, int num_pages) {
strcpy ( book
-> publisher
, publisher
) ; book-> year = year;
book-> num_pages = num_pages;
}
void get( Book* book, char * author, char * title, char * publisher, int * year, int * num_pages) {
strcpy ( publisher
, book
-> publisher
) ; * year = book-> year;
* num_pages = book-> num_pages;
}
void show( Book* book) {
printf ( "Author: %s\n " , book
-> author
) ; printf ( "Title: %s\n " , book
-> title
) ; printf ( "Publisher: %s\n " , book
-> publisher
) ; printf ( "Year: %d\n " , book
-> year
) ; printf ( "Number of pages: %d\n " , book
-> num_pages
) ; }
int main( ) {
Book books[ MAX_BOOKS] ;
int num_books = 0 ;
// Добавляем книги в массив
Book book1, book2, book3;
set( & book1, "P" , "Cool" , "NN" , 1990 , 300 ) ;
set( & book2, "G" , "Very cool" , "WWW" , 2010 , 250 ) ;
set( & book3, "G" , "Best" , "WWW" , 2011 , 400 ) ;
books[ num_books++ ] = book1;
books[ num_books++ ] = book2;
// Выводим список книг заданного автора
char author_search[ 50 ] = "Author1" ;
printf ( "Books by author %s:\n " , author_search
) ; for ( int i = 0 ; i < num_books; i++ ) {
if ( strcmp ( books
[ i
] .
author , author_search
) == 0 ) { show( & books[ i] ) ;
}
}
// Выводим список книг выпущенных заданным издателем
char publisher_search[ 50 ] = "Publisher2" ;
printf ( "\n Books published by %s:\n " , publisher_search
) ; for ( int i = 0 ; i < num_books; i++ ) {
if ( strcmp ( books
[ i
] .
publisher , publisher_search
) == 0 ) { show( & books[ i] ) ;
}
}
// Выводим список книг выпущенных после заданного года
int year_search = 2005 ;
printf ( "\n Books published after %d:\n " , year_search
) ; for ( int i = 0 ; i < num_books; i++ ) {
if ( books[ i] .year > year_search) {
show( & books[ i] ) ;
}
}
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNkZWZpbmUgTUFYX0JPT0tTIDEwMAoKdHlwZWRlZiBzdHJ1Y3QgewogICAgY2hhciBhdXRob3JbNTBdOwogICAgY2hhciB0aXRsZVsxMDBdOwogICAgY2hhciBwdWJsaXNoZXJbNTBdOwogICAgaW50IHllYXI7CiAgICBpbnQgbnVtX3BhZ2VzOwp9IEJvb2s7Cgp2b2lkIHNldChCb29rKiBib29rLCBjb25zdCBjaGFyKiBhdXRob3IsIGNvbnN0IGNoYXIqIHRpdGxlLCBjb25zdCBjaGFyKiBwdWJsaXNoZXIsIGludCB5ZWFyLCBpbnQgbnVtX3BhZ2VzKSB7CiAgICBzdHJjcHkoYm9vay0+YXV0aG9yLCBhdXRob3IpOwogICAgc3RyY3B5KGJvb2stPnRpdGxlLCB0aXRsZSk7CiAgICBzdHJjcHkoYm9vay0+cHVibGlzaGVyLCBwdWJsaXNoZXIpOwogICAgYm9vay0+eWVhciA9IHllYXI7CiAgICBib29rLT5udW1fcGFnZXMgPSBudW1fcGFnZXM7Cn0KCnZvaWQgZ2V0KEJvb2sqIGJvb2ssIGNoYXIqIGF1dGhvciwgY2hhciogdGl0bGUsIGNoYXIqIHB1Ymxpc2hlciwgaW50KiB5ZWFyLCBpbnQqIG51bV9wYWdlcykgewogICAgc3RyY3B5KGF1dGhvciwgYm9vay0+YXV0aG9yKTsKICAgIHN0cmNweSh0aXRsZSwgYm9vay0+dGl0bGUpOwogICAgc3RyY3B5KHB1Ymxpc2hlciwgYm9vay0+cHVibGlzaGVyKTsKICAgICp5ZWFyID0gYm9vay0+eWVhcjsKICAgICpudW1fcGFnZXMgPSBib29rLT5udW1fcGFnZXM7Cn0KCnZvaWQgc2hvdyhCb29rKiBib29rKSB7CiAgICBwcmludGYoIkF1dGhvcjogJXNcbiIsIGJvb2stPmF1dGhvcik7CiAgICBwcmludGYoIlRpdGxlOiAlc1xuIiwgYm9vay0+dGl0bGUpOwogICAgcHJpbnRmKCJQdWJsaXNoZXI6ICVzXG4iLCBib29rLT5wdWJsaXNoZXIpOwogICAgcHJpbnRmKCJZZWFyOiAlZFxuIiwgYm9vay0+eWVhcik7CiAgICBwcmludGYoIk51bWJlciBvZiBwYWdlczogJWRcbiIsIGJvb2stPm51bV9wYWdlcyk7Cn0KCmludCBtYWluKCkgewogICAgQm9vayBib29rc1tNQVhfQk9PS1NdOwogICAgaW50IG51bV9ib29rcyA9IDA7CgogICAgLy8g0JTQvtCx0LDQstC70Y/QtdC8INC60L3QuNCz0Lgg0LIg0LzQsNGB0YHQuNCyCiAgICBCb29rIGJvb2sxLCBib29rMiwgYm9vazM7CiAgICBzZXQoJmJvb2sxLCAiUCIsICJDb29sIiwgIk5OIiwgMTk5MCwgMzAwKTsKICAgIHNldCgmYm9vazIsICJHIiwgIlZlcnkgY29vbCIsICJXV1ciLCAyMDEwLCAyNTApOwogICAgc2V0KCZib29rMywgIkciLCAiQmVzdCIsICJXV1ciLCAyMDExLCA0MDApOwogICAgYm9va3NbbnVtX2Jvb2tzKytdID0gYm9vazE7CiAgICBib29rc1tudW1fYm9va3MrK10gPSBib29rMjsKCiAgICAvLyDQktGL0LLQvtC00LjQvCDRgdC/0LjRgdC+0Log0LrQvdC40LMg0LfQsNC00LDQvdC90L7Qs9C+INCw0LLRgtC+0YDQsAogICAgY2hhciBhdXRob3Jfc2VhcmNoWzUwXSA9ICJBdXRob3IxIjsKICAgIHByaW50ZigiQm9va3MgYnkgYXV0aG9yICVzOlxuIiwgYXV0aG9yX3NlYXJjaCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bV9ib29rczsgaSsrKSB7CiAgICAgICAgaWYgKHN0cmNtcChib29rc1tpXS5hdXRob3IsIGF1dGhvcl9zZWFyY2gpID09IDApIHsKICAgICAgICAgICAgc2hvdygmYm9va3NbaV0pOwogICAgICAgIH0KICAgIH0KCiAgICAvLyDQktGL0LLQvtC00LjQvCDRgdC/0LjRgdC+0Log0LrQvdC40LMg0LLRi9C/0YPRidC10L3QvdGL0YUg0LfQsNC00LDQvdC90YvQvCDQuNC30LTQsNGC0LXQu9C10LwKICAgIGNoYXIgcHVibGlzaGVyX3NlYXJjaFs1MF0gPSAiUHVibGlzaGVyMiI7CiAgICBwcmludGYoIlxuQm9va3MgcHVibGlzaGVkIGJ5ICVzOlxuIiwgcHVibGlzaGVyX3NlYXJjaCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bV9ib29rczsgaSsrKSB7CiAgICAgICAgaWYgKHN0cmNtcChib29rc1tpXS5wdWJsaXNoZXIsIHB1Ymxpc2hlcl9zZWFyY2gpID09IDApIHsKICAgICAgICAgICAgc2hvdygmYm9va3NbaV0pOwogICAgICAgIH0KICAgIH0KCiAgICAvLyDQktGL0LLQvtC00LjQvCDRgdC/0LjRgdC+0Log0LrQvdC40LMg0LLRi9C/0YPRidC10L3QvdGL0YUg0L/QvtGB0LvQtSDQt9Cw0LTQsNC90L3QvtCz0L4g0LPQvtC00LAKICAgIGludCB5ZWFyX3NlYXJjaCA9IDIwMDU7CiAgICBwcmludGYoIlxuQm9va3MgcHVibGlzaGVkIGFmdGVyICVkOlxuIiwgeWVhcl9zZWFyY2gpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fYm9va3M7IGkrKykgewogICAgICAgIGlmIChib29rc1tpXS55ZWFyID4geWVhcl9zZWFyY2gpIHsKICAgICAgICAgICAgc2hvdygmYm9va3NbaV0pOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMDsKfQoK