Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // MP_OP_LAB5.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
- //
- #include "pch.h"
- #include <iostream>
- #include <vector>
- #include <string>
- #include <algorithm>
- using namespace std;
- struct book {
- string author_surname;
- string author_name;
- string book_name;
- string publisher_name;
- int publishment_year;
- };
- void printMenu() {
- cout << endl;
- cout << "1. Добавить новую книгу" << endl;
- cout << "2. Распечатать информацию о всех книгах" << endl;
- cout << "3. Найти все книги заданного автора" << endl;
- cout << "4. Найти всех авторов заданного издательства" << endl;
- cout << "Ваш выбор: ";
- }
- int handleInput() {
- int choice;
- while (true)
- {
- cin >> choice;
- if (choice >= 1 && choice <= 4) { break; }
- else { cout << endl << "Повторите ввод: "; continue; }
- }
- return choice;
- }
- book * insertBook() {
- book * newBook = new book();
- cout << "Введите фамилию автора: ";
- cin >> newBook->author_surname;
- cout << "Введите имя автора: ";
- cin >> newBook->author_name;
- cout << "Введите название книги: ";
- cin >> newBook->book_name;
- cout << "Введите название издателя: ";
- cin >> newBook->publisher_name;
- cout << "Введите год издания: ";
- cin >> newBook->publishment_year;
- return newBook;
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- vector<book *> books;
- string author;
- vector<book *> foundBooks;
- vector<string> authors;
- book * newBook = new book();
- while (true) {
- printMenu();
- int choice = handleInput();
- switch (choice) {
- case 1:
- books.push_back(insertBook());
- break;
- case 2:
- for (auto b : books) {
- std::cout << "Фамилия автора: " << b->author_surname
- << "; Имя автора: " << b->author_name
- << "; Название книги: " << b->book_name
- << "; Издатель: " << b->publisher_name
- << "; Год издания: " << b->publishment_year
- << endl;
- }
- break;
- case 3:
- cout << "Введите фамилию автора: ";
- cin >> author;
- foundBooks.clear();
- for (auto b : books) {
- if (b->author_surname == author) {
- foundBooks.push_back(b);
- }
- }
- cout << "Книги данного автора: " << endl;
- for (auto b : foundBooks) {
- std::cout << "Фамилия автора: " << b->author_surname
- << "; Имя автора: " << b->author_name
- << "; Название книги: " << b->book_name
- << "; Издатель: " << b->publisher_name
- << "; Год издания: " << b->publishment_year
- << endl;
- }
- break;
- case 4:
- string publisher;
- cout << "Введите название издательства: ";
- cin >> publisher;
- authors.clear();
- for (auto b : books) {
- if (b->publisher_name == publisher) {
- authors.push_back(b->author_surname);
- }
- }
- sort(authors.begin(), authors.end());
- cout << "Авторы заданного издательства: " << endl;
- for (auto a : authors) {
- cout << a << endl;
- }
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement