#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" , "News" , 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/QtdC8INC60L3QuNCz0Lgg0LIg0LzQsNGB0YHQuNCyCiAgICBCb29rIGJvb2sxLCBib29rMiwgYm9vazM7CiAgICBzZXQoJmJvb2sxLCAiUCIsICJDb29sIiwgIk5OIiwgMTk5MCwgMzAwKTsKICAgIHNldCgmYm9vazIsICJHIiwgIlZlcnkgY29vbCIsICJOZXdzIiwgMjAxMCwgMjUwKTsKICAgIHNldCgmYm9vazMsICJHIiwgIkJlc3QiLCAiV1dXIiwgMjAxMSwgNDAwKTsKICAgIGJvb2tzW251bV9ib29rcysrXSA9IGJvb2sxOwogICAgYm9va3NbbnVtX2Jvb2tzKytdID0gYm9vazI7CgogICAgLy8g0JLRi9Cy0L7QtNC40Lwg0YHQv9C40YHQvtC6INC60L3QuNCzINC30LDQtNCw0L3QvdC+0LPQviDQsNCy0YLQvtGA0LAKICAgIGNoYXIgYXV0aG9yX3NlYXJjaFs1MF0gPSAiQXV0aG9yMSI7CiAgICBwcmludGYoIkJvb2tzIGJ5IGF1dGhvciAlczpcbiIsIGF1dGhvcl9zZWFyY2gpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fYm9va3M7IGkrKykgewogICAgICAgIGlmIChzdHJjbXAoYm9va3NbaV0uYXV0aG9yLCBhdXRob3Jfc2VhcmNoKSA9PSAwKSB7CiAgICAgICAgICAgIHNob3coJmJvb2tzW2ldKTsKICAgICAgICB9CiAgICB9CgogICAgLy8g0JLRi9Cy0L7QtNC40Lwg0YHQv9C40YHQvtC6INC60L3QuNCzINCy0YvQv9GD0YnQtdC90L3Ri9GFINC30LDQtNCw0L3QvdGL0Lwg0LjQt9C00LDRgtC10LvQtdC8CiAgICBjaGFyIHB1Ymxpc2hlcl9zZWFyY2hbNTBdID0gIlB1Ymxpc2hlcjIiOwogICAgcHJpbnRmKCJcbkJvb2tzIHB1Ymxpc2hlZCBieSAlczpcbiIsIHB1Ymxpc2hlcl9zZWFyY2gpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fYm9va3M7IGkrKykgewogICAgICAgIGlmIChzdHJjbXAoYm9va3NbaV0ucHVibGlzaGVyLCBwdWJsaXNoZXJfc2VhcmNoKSA9PSAwKSB7CiAgICAgICAgICAgIHNob3coJmJvb2tzW2ldKTsKICAgICAgICB9CiAgICB9CgogICAgLy8g0JLRi9Cy0L7QtNC40Lwg0YHQv9C40YHQvtC6INC60L3QuNCzINCy0YvQv9GD0YnQtdC90L3Ri9GFINC/0L7RgdC70LUg0LfQsNC00LDQvdC90L7Qs9C+INCz0L7QtNCwCiAgICBpbnQgeWVhcl9zZWFyY2ggPSAyMDA1OwogICAgcHJpbnRmKCJcbkJvb2tzIHB1Ymxpc2hlZCBhZnRlciAlZDpcbiIsIHllYXJfc2VhcmNoKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2Jvb2tzOyBpKyspIHsKICAgICAgICBpZiAoYm9va3NbaV0ueWVhciA+IHllYXJfc2VhcmNoKSB7CiAgICAgICAgICAgIHNob3coJmJvb2tzW2ldKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCg==