C/C++

Задачка по c++

Напишите программу для хранения информации о книгах (Автор, количество) в стеке.
Программа должна запрашивать ввод информации о пяти книгах с клавиатуры и сохранять в стеке.
Напишите функцию удаления элемента стека.
Программа должна вывести содержимое стека и вершину стека, спросить, сколько элементов необходимо удалить, удалить указанное количество элементов из стека и вывести содержимое стека и вершину стека.
Очистить память и вывести содержимое стека.

Пример ввода и вывода:

Введите автора: Пушкин
Введите количество: 1
Введите автора: Лермонтов
Введите количество: 2
Введите автора: Блок
Введите количество: 3
Введите автора: Есенин
Введите количество: 4
Введите автора: Бунин
Введите количество: 5
==================
Бунин 5
Есенин 4
Блок 3
Лермонтов 2
Пушкин 1
Вершина стека: Бунин 5
Сколько элементов удалить? 3
==================
Лермонтов 2
Пушкин 1
Вершина стека: Лермонтов 2
==================
Rameo Tj
Rameo Tj
87
```c++
#include <iostream>
#include <stack>
#include <string>

struct Book {
std::string author;
int quantity;
};

void deleteFromStack(std::stack<Book>& s, int n) {
for (int i = 0; i < n; i++) {
s.pop();
}
}

int main() {
std::stack<Book> bookStack;

// Запрос информации о пяти книгах и добавление их в стек
for (int i = 0; i < 5; i++) {
Book book;
std::cout << "Введите автора: ";
std::cin >> book.author ;
std::cout << "Введите количество: ";
std::cin >> book.quantity;
bookStack.push(book);
}

// Вывод содержимого стека и вершины стека
std::cout << "==================" << std::endl;
std::cout << "Содержимое стека:" << std::endl;
while (!bookStack.empty()) {
Book book = bookStack.top ();
std::cout << book.author << " " << book.quantity << std::endl;
bookStack.pop();
}
std::cout << "Вершина стека: " << bookStack.top ().author << " " << bookStack.top ().quantity << std::endl;

// Удаление элементов из стека
int n;
std::cout << "Сколько элементов удалить? ";
std::cin >> n;
deleteFromStack(bookStack, n);

// Вывод содержимого стека и вершины стека после удаления элементов
std::cout << "==================" << std::endl;
std::cout << "Содержимое стека после удаления элементов:" << std::endl;
while (!bookStack.empty()) {
Book book = bookStack.top ();
std::cout << book.author << " " << book.quantity << std::endl;
bookStack.pop();
}
std::cout << "Вершина стека: " << bookStack.top ().author << " " << bookStack.top ().quantity << std::endl;

return 0;
}
```
Сергей Л
Сергей Л
12 140
Лучший ответ
 #include  
#include
#include

using namespace std;

template
T input(istream& inp, const char* msg) {
cout > value;
cin.ignore(0x1000, '\n');
return value;
}

struct Writer {
unsigned count;
string name;
Writer() : count(0) {}
private:
friend istream& operator>>(istream& inp, Writer& writer) {
writer.name = input(inp, "Введите автора: ");
writer.count = input(inp, "Введите количество: ");
return inp;
}
friend ostream& operator
S.t.a.l.k.e.r .
S.t.a.l.k.e.r .
65 190