#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], "Author1", "Book1", "Publisher1", 2000, 300);
setBook(&books[1], "Author2", "Book2", "Publisher2", 1995, 250);
setBook(&books[2], "Author1", "Book3", "Publisher1", 2010, 400);
showBooksByAuthor(books, 3, "Author1");
showBooksByPublisher(books, 3, "Publisher1");
showBooksAfterYear(books, 3, 1990);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNkZWZpbmUgTUFYX0JPT0tTIDEwCgpzdHJ1Y3QgQm9vayB7CmNoYXIgYXV0aG9yWzUwXTsKY2hhciB0aXRsZVsxMDBdOwpjaGFyIHB1Ymxpc2hlcls1MF07CmludCB5ZWFyOwppbnQgbnVtX29mX3BhZ2VzOwp9OwoKdm9pZCBzZXRCb29rKHN0cnVjdCBCb29rICpib29rLCBjaGFyIGF1dGhvcltdLCBjaGFyIHRpdGxlW10sIGNoYXIgcHVibGlzaGVyW10sIGludCB5ZWFyLCBpbnQgbnVtX29mX3BhZ2VzKSB7CnN0cmNweShib29rLT5hdXRob3IsIGF1dGhvcik7CnN0cmNweShib29rLT50aXRsZSwgdGl0bGUpOwpzdHJjcHkoYm9vay0+cHVibGlzaGVyLCBwdWJsaXNoZXIpOwpib29rLT55ZWFyID0geWVhcjsKYm9vay0+bnVtX29mX3BhZ2VzID0gbnVtX29mX3BhZ2VzOwp9Cgp2b2lkIGdldEJvb2soc3RydWN0IEJvb2sgYm9vaykgewpwcmludGYoIkF1dGhvcjogJXNcbiIsIGJvb2suYXV0aG9yKTsKcHJpbnRmKCJUaXRsZTogJXNcbiIsIGJvb2sudGl0bGUpOwpwcmludGYoIlB1Ymxpc2hlcjogJXNcbiIsIGJvb2sucHVibGlzaGVyKTsKcHJpbnRmKCJZZWFyOiAlZFxuIiwgYm9vay55ZWFyKTsKcHJpbnRmKCJOdW1iZXIgb2YgcGFnZXM6ICVkXG4iLCBib29rLm51bV9vZl9wYWdlcyk7Cn0KCnZvaWQgc2hvd0Jvb2tzQnlBdXRob3Ioc3RydWN0IEJvb2sgYm9va3NbXSwgaW50IG51bV9ib29rcywgY2hhciBhdXRob3JbXSkgewpwcmludGYoIkJvb2tzIGJ5IGF1dGhvciAlczpcbiIsIGF1dGhvcik7CmZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2Jvb2tzOyBpKyspIHsKaWYgKHN0cmNtcChib29rc1tpXS5hdXRob3IsIGF1dGhvcikgPT0gMCkgewpnZXRCb29rKGJvb2tzW2ldKTsKfQp9Cn0KCnZvaWQgc2hvd0Jvb2tzQnlQdWJsaXNoZXIoc3RydWN0IEJvb2sgYm9va3NbXSwgaW50IG51bV9ib29rcywgY2hhciBwdWJsaXNoZXJbXSkgewpwcmludGYoIkJvb2tzIGJ5IHB1Ymxpc2hlciAlczpcbiIsIHB1Ymxpc2hlcik7CmZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2Jvb2tzOyBpKyspIHsKaWYgKHN0cmNtcChib29rc1tpXS5wdWJsaXNoZXIsIHB1Ymxpc2hlcikgPT0gMCkgewpnZXRCb29rKGJvb2tzW2ldKTsKfQp9Cn0KCnZvaWQgc2hvd0Jvb2tzQWZ0ZXJZZWFyKHN0cnVjdCBCb29rIGJvb2tzW10sIGludCBudW1fYm9va3MsIGludCB5ZWFyKSB7CnByaW50ZigiQm9va3MgcmVsZWFzZWQgYWZ0ZXIgeWVhciAlZDpcbiIsIHllYXIpOwpmb3IgKGludCBpID0gMDsgaSA8IG51bV9ib29rczsgaSsrKSB7CmlmIChib29rc1tpXS55ZWFyID4geWVhcikgewpnZXRCb29rKGJvb2tzW2ldKTsKfQp9Cn0KCmludCBtYWluKCkgewpzdHJ1Y3QgQm9vayBib29rc1tNQVhfQk9PS1NdOwpzZXRCb29rKCZib29rc1swXSwgIkF1dGhvcjEiLCAiQm9vazEiLCAiUHVibGlzaGVyMSIsIDIwMDAsIDMwMCk7CnNldEJvb2soJmJvb2tzWzFdLCAiQXV0aG9yMiIsICJCb29rMiIsICJQdWJsaXNoZXIyIiwgMTk5NSwgMjUwKTsKc2V0Qm9vaygmYm9va3NbMl0sICJBdXRob3IxIiwgIkJvb2szIiwgIlB1Ymxpc2hlcjEiLCAyMDEwLCA0MDApOwoKc2hvd0Jvb2tzQnlBdXRob3IoYm9va3MsIDMsICJBdXRob3IxIik7CnNob3dCb29rc0J5UHVibGlzaGVyKGJvb2tzLCAzLCAiUHVibGlzaGVyMSIpOwpzaG93Qm9va3NBZnRlclllYXIoYm9va3MsIDMsIDE5OTApOwoKcmV0dXJuIDA7Cn0=