#include <iostream>
#include <string>
///////////////////////////////////////////////////////////////////////////////
class Publication
{
private:
std::string title;
float price;
public:
virtual void set_data()
{
std::cout << "\n Enter title: "; std::cin >> title;
std::cout << " Enter price: "; std::cin >> price;
}
virtual void show_data()const
{
std::cout << "\n title: " << title;
std::cout << "\n price: " << price << " $";
}
};
//-----------------------------------------------------------------------------
class Book : public Publication
{
private:
int pages;
public:
void set_data()
{
Publication::set_data();
std::cout << " Set book pages: "; std::cin >> pages;
}
void show_data()
{
Publication::show_data();
std::cout << "\n pages: " << pages << std::endl;
}
};
//-----------------------------------------------------------------------------
class Tape : public Publication
{
private:
float time;
public:
void set_data()
{
Publication::set_data();
std::cout << " Set tape time: "; std::cin >> time;
}
void show_data()
{
Publication::show_data();
std::cout << "\n time: " << time << " min" << std::endl;
}
};
///////////////////////////////////////////////////////////////////////////////
int main()
{
Publication* pubarr[100];
int n = 0;
char chose;
do {
std::cout << "Enter data for book or tape (b/t)?"; std::cin >> chose;
if (chose == 'b')
{ pubarr[n] = new Book; }
else
{ pubarr[n] = new Tape; }
pubarr[n++]->set_data();
std::cout << "\n Again (y/n)?"; std::cin >> chose;
} while (chose == 'y');
for (int i = 0; i < n; i++) {
pubarr[i]->show_data();
}
return 0;
}