#include <stdio.h>
#include <string.h>
#define MAX_BOOKS 10
struct Book {
char author[ 50 ] ;
char title[ 100 ] ;
char publisher[ 50 ] ;
int year;
int num_of_pages;
} ;
void setBook( struct Book * book, char author[ ] , char title[ ] , char publisher[ ] , int year, int num_of_pages) {
strcpy ( book
-> publisher
, publisher
) ; book-> year = year;
book-> num_of_pages = num_of_pages;
}
void getBook( struct 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_of_pages ) ; }
void showBooksByAuthor( struct Book books[ ] , int num_books, char author[ ] ) {
printf ( "Books by author %s:\n " , author
) ; for ( int i = 0 ; i < num_books; i++ ) {
if ( strcmp ( books
[ i
] .
author , author
) == 0 ) { getBook( books[ i] ) ;
}
}
}
void showBooksByPublisher( struct Book books[ ] , int num_books, char publisher[ ] ) {
printf ( "Books by publisher %s:\n " , publisher
) ; for ( int i = 0 ; i < num_books; i++ ) {
if ( strcmp ( books
[ i
] .
publisher , publisher
) == 0 ) { getBook( books[ i] ) ;
}
}
}
void showBooksAfterYear( struct Book books[ ] , int num_books, int year) {
printf ( "Books released after year %d:\n " , year
) ; for ( int i = 0 ; i < num_books; i++ ) {
if ( books[ i] .year > year) {
getBook( books[ i] ) ;
}
}
}
int main( ) {
struct Book books[ MAX_BOOKS] ;
setBook( & books[ 0 ] , "G" , "B" , "N" , 2000 , 300 ) ;
setBook( & books[ 1 ] , "G" , "BB" , "N" , 1995 , 300 ) ;
setBook( & books[ 2 ] , "P" , "H" , "V" , 2010 , 400 ) ;
showBooksByAuthor( books, 3 , "G" ) ;
showBooksByPublisher( books, 3 , "V" ) ;
showBooksAfterYear( books, 3 , 2001 ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNkZWZpbmUgTUFYX0JPT0tTIDEwCgpzdHJ1Y3QgQm9vayB7CmNoYXIgYXV0aG9yWzUwXTsKY2hhciB0aXRsZVsxMDBdOwpjaGFyIHB1Ymxpc2hlcls1MF07CmludCB5ZWFyOwppbnQgbnVtX29mX3BhZ2VzOwp9OwoKdm9pZCBzZXRCb29rKHN0cnVjdCBCb29rICpib29rLCBjaGFyIGF1dGhvcltdLCBjaGFyIHRpdGxlW10sIGNoYXIgcHVibGlzaGVyW10sIGludCB5ZWFyLCBpbnQgbnVtX29mX3BhZ2VzKSB7CnN0cmNweShib29rLT5hdXRob3IsIGF1dGhvcik7CnN0cmNweShib29rLT50aXRsZSwgdGl0bGUpOwpzdHJjcHkoYm9vay0+cHVibGlzaGVyLCBwdWJsaXNoZXIpOwpib29rLT55ZWFyID0geWVhcjsKYm9vay0+bnVtX29mX3BhZ2VzID0gbnVtX29mX3BhZ2VzOwp9Cgp2b2lkIGdldEJvb2soc3RydWN0IEJvb2sgYm9vaykgewpwcmludGYoIkF1dGhvcjogJXNcbiIsIGJvb2suYXV0aG9yKTsKcHJpbnRmKCJUaXRsZTogJXNcbiIsIGJvb2sudGl0bGUpOwpwcmludGYoIlB1Ymxpc2hlcjogJXNcbiIsIGJvb2sucHVibGlzaGVyKTsKcHJpbnRmKCJZZWFyOiAlZFxuIiwgYm9vay55ZWFyKTsKcHJpbnRmKCJOdW1iZXIgb2YgcGFnZXM6ICVkXG4iLCBib29rLm51bV9vZl9wYWdlcyk7Cn0KCnZvaWQgc2hvd0Jvb2tzQnlBdXRob3Ioc3RydWN0IEJvb2sgYm9va3NbXSwgaW50IG51bV9ib29rcywgY2hhciBhdXRob3JbXSkgewpwcmludGYoIkJvb2tzIGJ5IGF1dGhvciAlczpcbiIsIGF1dGhvcik7CmZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2Jvb2tzOyBpKyspIHsKaWYgKHN0cmNtcChib29rc1tpXS5hdXRob3IsIGF1dGhvcikgPT0gMCkgewpnZXRCb29rKGJvb2tzW2ldKTsKfQp9Cn0KCnZvaWQgc2hvd0Jvb2tzQnlQdWJsaXNoZXIoc3RydWN0IEJvb2sgYm9va3NbXSwgaW50IG51bV9ib29rcywgY2hhciBwdWJsaXNoZXJbXSkgewpwcmludGYoIkJvb2tzIGJ5IHB1Ymxpc2hlciAlczpcbiIsIHB1Ymxpc2hlcik7CmZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2Jvb2tzOyBpKyspIHsKaWYgKHN0cmNtcChib29rc1tpXS5wdWJsaXNoZXIsIHB1Ymxpc2hlcikgPT0gMCkgewpnZXRCb29rKGJvb2tzW2ldKTsKfQp9Cn0KCnZvaWQgc2hvd0Jvb2tzQWZ0ZXJZZWFyKHN0cnVjdCBCb29rIGJvb2tzW10sIGludCBudW1fYm9va3MsIGludCB5ZWFyKSB7CnByaW50ZigiQm9va3MgcmVsZWFzZWQgYWZ0ZXIgeWVhciAlZDpcbiIsIHllYXIpOwpmb3IgKGludCBpID0gMDsgaSA8IG51bV9ib29rczsgaSsrKSB7CmlmIChib29rc1tpXS55ZWFyID4geWVhcikgewpnZXRCb29rKGJvb2tzW2ldKTsKfQp9Cn0KCmludCBtYWluKCkgewpzdHJ1Y3QgQm9vayBib29rc1tNQVhfQk9PS1NdOwpzZXRCb29rKCZib29rc1swXSwgIkciLCAiQiIsICJOIiwgMjAwMCwgMzAwKTsKc2V0Qm9vaygmYm9va3NbMV0sICJHIiwgIkJCIiwgIk4iLCAxOTk1LCAzMDApOwpzZXRCb29rKCZib29rc1syXSwgIlAiLCAiSCIsICJWIiwgMjAxMCwgNDAwKTsKCnNob3dCb29rc0J5QXV0aG9yKGJvb2tzLCAzLCAiRyIpOwpzaG93Qm9va3NCeVB1Ymxpc2hlcihib29rcywgMywgIlYiKTsKc2hvd0Jvb2tzQWZ0ZXJZZWFyKGJvb2tzLCAzLCAyMDAxKTsKCnJldHVybiAwOwp9Cg==