#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->author, author);
strcpy(book->title, title);
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(author, book->author);
strcpy(title, book->title);
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("\nBooks 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("\nBooks 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+IHllYXJfc2VhcmNoKSB7CiAgICAgICAgICAgIHNob3coJmJvb2tzW2ldKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCgo=