задача по наследованию: "Создать базовый класс ПЕЧАТНАЯ ПРОДУКЦИЯ (задаются название, количество страниц). Создать производные классы КНИГА (задаются данные об авторе, размере страницы, количестве экземпляров) и ЖУРНАЛ (задаются размер страницы, количество экземпляров, периодичность выхода). Для введенных данных о печатной продукции вычислить расходы бумаги (в кв. м.) – для каждого примера и суммарные, отсортировать эти примеры по убыванию издержек. Для проверки использовать массив указателей на объекты базового класса, которым присвоить адрес объектов производных классов."
Вопрос:
Как реализовать ввод и вывод всех необходимых мне данных.
Ну то есть, вот вывод кода в main():
По моей задумке, после каждой введенной цифры должны сперва вводится мной с компа и потом выводится с помощью виртуальной ф-ции print() все необходимые мне данные. Вот как сделать ввод и потом вывод этих даных?
#include <iostream>
#include <string>
using namespace std;
class DRUK
{
protected:
string m_name;
int m_pages;
public:
DRUK(const string& name = "", double _pages = 0) : m_pages(_pages), m_name(name) {}
const string& getName() const
{
return m_name;
}
int getPages() const
{
return m_pages;
}
virtual void print()const
{
cout << "Название: " << m_name << "\n";
cout << "Кол-во стораниц: " << m_pages << "\n";
}
};
class BOOK : public DRUK
{
private:
string m_author;
int m_sizeofPages;
int m_countofPrimir;
public:
BOOK(const string& name = "", double _pages = 0,
const string& author = "", double size = 0, double primir = 0)
: DRUK(name, _pages), m_author(author), m_sizeofPages(size), m_countofPrimir(primir)
{
};
const string& getAuthor() const{return m_author;}
int getSize() const{return m_sizeofPages;}
int getCount() const{return m_countofPrimir;}
virtual void print()const override
{
DRUK::print();
cout << "Автор: " << m_author << "\n" <<
"Розмер страниц: " << m_sizeofPages << "\n" <<
"Кол-во экземпляров: " << m_countofPrimir << "\n";
}
};
class JURNAL : public DRUK
{
private:
int m_SizeOfPages;
int m_CountOfPrimir;
int m_period;
public:
JURNAL(const string& name = "", double _pages = 0,
double _size = 0, double _primir = 0, double _period = 0)
: DRUK(name, _pages), m_SizeOfPages(_size), m_CountOfPrimir(_primir), m_period(_period)
{
};
int getSizeOfPages() const { return m_SizeOfPages; }
int getCountOfPrimir() const { return m_CountOfPrimir; }
int getPeriod() const { return m_period; }
virtual void print()const override
{
DRUK::print();
cout << "Розмер страниц: " << m_SizeOfPages << "\n" <<
"Кол-во экземпляров: " << m_CountOfPrimir << "\n" <<
"Период вихода: " << m_period << "\n";
}
};
const ostream& operator<< (ostream& out, const DRUK& druk)
{
druk.print();
return out;
}
int main() {
system("chcp 1251");
int count;
cout << "Введите кол-во печатной продукции: ";
cin >> count;
DRUK** totalDRUK = new DRUK*[count];
for (int i = 0; i < count; ++i) {
std::cout << "Item number " << i + 1 << " is a (1. BOOK/ 2. JURNAL): ";
char choise;
std::cin >> choise;
switch (choise)
{
case '1': totalDRUK[i] = new BOOK;
break;
case '2': totalDRUK[i] = new JURNAL;
break;
default:
--i;
cout << "Invalid choise!" << endl;
break;
}
}
return 0;
}