#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", "WWW", 2010, 250);
set(&book3, "G", "Best", "WWW", 2011, 400);
books[num_books++] = book1;
books[num_books++] = book2;
// Выводим список книг заданного автора
char author_search[50] = "P";
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] = "WWW";
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 = 2000;
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/QtdC8INC60L3QuNCz0Lgg0LIg0LzQsNGB0YHQuNCyCiAgICBCb29rIGJvb2sxLCBib29rMiwgYm9vazM7CiAgICBzZXQoJmJvb2sxLCAiUCIsICJDb29sIiwgIk5OIiwgMTk5MCwgMzAwKTsKICAgIHNldCgmYm9vazIsICJHIiwgIlZlcnkgY29vbCIsICJXV1ciLCAyMDEwLCAyNTApOwogICAgc2V0KCZib29rMywgIkciLCAiQmVzdCIsICJXV1ciLCAyMDExLCA0MDApOwogICAgYm9va3NbbnVtX2Jvb2tzKytdID0gYm9vazE7CiAgICBib29rc1tudW1fYm9va3MrK10gPSBib29rMjsKCiAgICAvLyDQktGL0LLQvtC00LjQvCDRgdC/0LjRgdC+0Log0LrQvdC40LMg0LfQsNC00LDQvdC90L7Qs9C+INCw0LLRgtC+0YDQsAogICAgY2hhciBhdXRob3Jfc2VhcmNoWzUwXSA9ICJQIjsKICAgIHByaW50ZigiQm9va3MgYnkgYXV0aG9yICVzOlxuIiwgYXV0aG9yX3NlYXJjaCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bV9ib29rczsgaSsrKSB7CiAgICAgICAgaWYgKHN0cmNtcChib29rc1tpXS5hdXRob3IsIGF1dGhvcl9zZWFyY2gpID09IDApIHsKICAgICAgICAgICAgc2hvdygmYm9va3NbaV0pOwogICAgICAgIH0KICAgIH0KCiAgICAvLyDQktGL0LLQvtC00LjQvCDRgdC/0LjRgdC+0Log0LrQvdC40LMg0LLRi9C/0YPRidC10L3QvdGL0YUg0LfQsNC00LDQvdC90YvQvCDQuNC30LTQsNGC0LXQu9C10LwKICAgIGNoYXIgcHVibGlzaGVyX3NlYXJjaFs1MF0gPSAiV1dXIjsKICAgIHByaW50ZigiXG5Cb29rcyBwdWJsaXNoZWQgYnkgJXM6XG4iLCBwdWJsaXNoZXJfc2VhcmNoKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2Jvb2tzOyBpKyspIHsKICAgICAgICBpZiAoc3RyY21wKGJvb2tzW2ldLnB1Ymxpc2hlciwgcHVibGlzaGVyX3NlYXJjaCkgPT0gMCkgewogICAgICAgICAgICBzaG93KCZib29rc1tpXSk7CiAgICAgICAgfQogICAgfQoKICAgIC8vINCS0YvQstC+0LTQuNC8INGB0L/QuNGB0L7QuiDQutC90LjQsyDQstGL0L/Rg9GJ0LXQvdC90YvRhSDQv9C+0YHQu9C1INC30LDQtNCw0L3QvdC+0LPQviDQs9C+0LTQsAogICAgaW50IHllYXJfc2VhcmNoID0gMjAwMDsKICAgIHByaW50ZigiXG5Cb29rcyBwdWJsaXNoZWQgYWZ0ZXIgJWQ6XG4iLCB5ZWFyX3NlYXJjaCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bV9ib29rczsgaSsrKSB7CiAgICAgICAgaWYgKGJvb2tzW2ldLnllYXIgPiB5ZWFyX3NlYXJjaCkgewogICAgICAgICAgICBzaG93KCZib29rc1tpXSk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAwOwp9Cgo=