Потърси помощ за своята домашна
Програма Добавете учебите си часове за седмицата.
За книгите в една библиотека се пази следната информация: заглавие, автор (име и фамилия), издателст
1
Петър Петров Попитан на 1 февруари 2024 г. в 10:31
Въпрос
За книгите в една библиотека се пази следната информация: заглавие, автор (име и фамилия), издателство, година на издаване.
1. Напишете програма на C++, която създава масив от структури, съдържащ информация за N (около 12-16) книги.
2. Извежда списък на всички книги, издадени през дадена година.
3. Извежда списък на книгите на даден автор.
4. Намира броя книги на за дадено издателство.
5. Подрежда книгите по азбучен ред.
6. Разпечатва подходящо началния масив. Програмата да се оформи с меню за избор, като всяка подточка бъде отделна функция. Данните за попълване на масива да са в отделна функция и да са предварително зададени, за да не се губи време за въвеждане при всяко пускане.
- Програмиране
Отговор
Ето примерна програма на C++, която изпълнява всички изисквания:
```cpp
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
struct Book {
string title, author, publisher;
int year;
};
void printBooks(Book books[], int n) {
for (int i = 0; i < n; i++) {
cout << books[i].title << ", " << books[i].author << ", " << books[i].publisher << ", " << books[i].year << endl;
}
}
void filterByYear(Book books[], int n, int year) {
for (int i = 0; i < n; i++) {
if (books[i].year == year) {
cout << books[i].title << ", " << books[i].author << endl;
}
}
}
void filterByAuthor(Book books[], int n, string author) {
for (int i = 0; i < n; i++) {
if (books[i].author == author) {
cout << books[i].title << ", " << books[i].year << endl;
}
}
}
void countByPublisher(Book books[], int n, string publisher) {
int count = 0;
for (int i = 0; i < n; i++) {
if (books[i].publisher == publisher) {
count++;
}
}
cout << "Брой книги на издателство " << publisher << ": " << count << endl;
}
bool compareBooks(Book a, Book b) {
return a.title < b.title;
}
void sortBooks(Book books[], int n) {
sort(books, books + n, compareBooks);
}
int main() {
Book books[4] = {
{"Заглавие 1", "Автор 1", "Издателство 1", 2020},
{"Заглавие 2", "Автор 2", "Издателство 2", 2021},
{"Заглавие 3", "Автор 1", "Издателство 1", 2021},
{"Заглавие 4", "Автор 3", "Издателство 2", 2020}
};
printBooks(books, 4);
filterByYear(books, 4, 2021);
filterByAuthor(books, 4, "Автор 1");
countByPublisher(books, 4, "Издателство 1");
sortBooks(books, 4);
printBooks(books, 4);
return 0;
}
```
Тази програма използва структурата `Book` за съхраняване на информацията за всяка книга. Има функции за филтриране на книгите по година и автор, броене на книгите на дадено издателство, сортиране на книгите по азбучен ред и печатане на всички книги. Във функцията `main` се създава масив от книги, след което се изпълняват всички функции.
За съжаление, ASCII арт не е подходящ за визуализация на тази програма, тъй като тя работи с текстови данни и логически операции, които не могат да бъдат изобразени визуално.