Предмет: Информатика, автор: MSashaZ

C++
Розробіть програму «Бібліотека». Створіть структуру «Книга» (назва, автор, видавництво, жанр). Створіть масив з 10 книг. Реалізуйте для нього такі мож ливості:
■ Редагувати книгу;
■ Друк усіх книг;
■ Пошук книг за автором;
■ Пошук книги за назвою;
■ Сортування масиву за назвою книг;
■ Сортування масиву за автором;
■ Сортування масиву за видавництвом.
■ Видалення книги за певним критерієм.
■ Додавання нової книги у масив

Ответы

Автор ответа: n58hf4b9c4
0

Ответ:

Объяснение:

#include <iostream>

#include <string>

#include <algorithm>

struct Book {

   std::string title;

   std::string author;

   std::string publisher;

   std::string genre;

};

void printBook(const Book& book) {

   std::cout << "Назва: " << book.title << std::endl;

   std::cout << "Автор: " << book.author << std::endl;

   std::cout << "Видавництво: " << book.publisher << std::endl;

   std::cout << "Жанр: " << book.genre << std::endl;

   std::cout << std::endl;

}

void editBook(Book& book) {

   std::cout << "Введіть нову назву: ";

   std::getline(std::cin >> std::ws, book.title);

   std::cout << "Введіть нового автора: ";

   std::getline(std::cin >> std::ws, book.author);

   std::cout << "Введіть нове видавництво: ";

   std::getline(std::cin >> std::ws, book.publisher);

   std::cout << "Введіть новий жанр: ";

   std::getline(std::cin >> std::ws, book.genre);

}

void printAllBooks(const Book library[], int size) {

   std::cout << "Книги в бібліотеці:" << std::endl;

   for (int i = 0; i < size; i++) {

       std::cout << "Книга " << i + 1 << ":" << std::endl;

       printBook(library[i]);

   }

}

void searchByAuthor(const Book library[], int size, const std::string& author) {

   std::cout << "Книги автора " << author << ":" << std::endl;

   bool found = false;

   for (int i = 0; i < size; i++) {

       if (library[i].author == author) {

           printBook(library[i]);

           found = true;

       }

   }

   if (!found) {

       std::cout << "Книги даного автора відсутні." << std::endl;

   }

}

void searchByTitle(const Book library[], int size, const std::string& title) {

   std::cout << "Книги з назвою \"" << title << "\":" << std::endl;

   bool found = false;

   for (int i = 0; i < size; i++) {

       if (library[i].title == title) {

           printBook(library[i]);

           found = true;

       }

   }

   if (!found) {

       std::cout << "Книги з такою назвою відсутні." << std::endl;

   }

}

bool compareByTitle(const Book& book1, const Book& book2) {

   return book1.title < book2.title;

}

bool compareByAuthor(const Book& book1, const Book& book2) {

   return book1.author < book2.author;

}

bool compareByPublisher(const Book& book1, const Book& book2) {

   return book1.publisher < book2.publisher;

}

void sortBooksByTitle(Book library[], int size) {

   std::sort(library, library + size, compareByTitle);

}

void sortBooksByAuthor(Book library[], int size) {

   std::sort(library, library + size, compareByAuthor);

}

void sortBooksByPublisher(Book library[], int size) {

   std::sort(library, library + size, compareByPublisher);

}

void removeBookByCriteria(Book library[], int& size, const std::string& criteria) {

   int removedCount = 0;

   for (int i = 0; i < size; i++) {

       if (library[i].title == criteria || library[i].author == criteria ||

           library[i].publisher == criteria || library[i].genre == criteria) {

           removedCount++;

       } else {

           library[i - removedCount] = library[i];

       }

   }

   size -= removedCount;

   std::cout << "Видалено " << removedCount << " книг(и) за вказаним критерієм." << std::endl;

}

void addNewBook(Book library[], int& size) {

   if (size >= 10) {

       std::cout << "Бібліотека заповнена. Неможливо додати нову книгу." << std::endl;

       return;

   }

   Book newBook;

   std::cout << "Введіть назву нової книги: ";

   std::getline(std::cin >> std::ws, newBook.title);

   std::cout << "Введіть автора нової книги: ";

   std::getline(std::cin >> std::ws, newBook.author);

   std::cout << "Введіть видавництво нової книги: ";

   std::getline(std::cin >> std::ws, newBook.publisher);

   std::cout << "Введіть жанр нової книги: ";

   std::getline(std::cin >> std::ws, newBook.genre);

   library[size] = newBook;

   size++;

   std::cout << "Нова книга успішно додана до бібліотеки." << std::endl;

}

int main() {

   Book library[10];

   int size = 0;

   // Додавання початкових книг до бібліотеки (для прикладу)

   Book book1 = {"Книга 1", "Автор 1", "Видавництво 1", "Жанр 1"};

   Book book2 = {"Книга 2", "Автор 2", "Видавництво 2", "Жанр 2"};

   library[size++] = book1;

   library[size++] = book2;

   // Взаємодія з бібліотекою

   addNewBook(library, size);

   editBook(library[0]);

   printAllBooks(library, size);

   searchByAuthor(library, size, "Автор 1");

   searchByTitle(library, size, "Книга 2");

   sortBooksByTitle(library, size);

   sortBooksByAuthor(library, size);

   sortBooksByPublisher(library, size);

   removeBookByCriteria(library, size, "Жанр 2");

   printAllBooks(library, size);

   return 0;

}

Похожие вопросы
Предмет: Алгебра, автор: solomatindavid0312