chevengur

Lafore C++ | Chapter 9 | exercise#2

Apr 25th, 2023 (edited)
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.39 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4.  
  5. //override - это ключевое слово в C++, которое используется для указания того,
  6. //что функция - член производного класса явно переопределяет виртуальную функцию базового класса.
  7.  
  8. class publication {
  9.     std::string name_book_;
  10.     double price_;
  11.  
  12. public:                                                                    
  13.     virtual void getdata() {
  14.         std::cout << "Title of the book: " << name_book_ << std::endl;
  15.         std::cout << "Book price: " << price_ << std::endl;
  16.     }
  17.  
  18.     virtual void setdata() {
  19.         std::cout << "enter the name of the book: " << std::endl;
  20.         std::getline(std::cin, name_book_);
  21.         std::cout << "enter the price: " << std::endl;
  22.         std::cin >> price_;
  23.     }
  24. };
  25.  
  26. class sales {
  27.     double mysales_month_[3];
  28.  
  29. public:
  30.  
  31.     virtual void getdata() {
  32.         for (int i = 0; i < 3; ++i) {
  33.             std::cout << "sold in " << i + 1 << "month: " << mysales_month_[i] << std::endl;
  34.         }
  35.     }
  36.  
  37.     virtual void setdata() {
  38.         for (int i = 0; i < 3; ++i) {
  39.             std::cout << "number of books sold in" << i + 1 << " month: " << std::endl;
  40.             std::cin >> mysales_month_[i];
  41.         }
  42.     }
  43. };
  44.  
  45. class book : public publication {
  46.     int size_book_;
  47.  
  48. public:
  49.     void getdata() {
  50.         std::cout << "Size book: " << size_book_ << std::endl;
  51.     }
  52.  
  53.     void setdata() {
  54.         std::cout << "enter the number of pages: " << std::endl;
  55.         std::cin >> size_book_;
  56.         std::cin.ignore(); // игнорируем символ новой строки во входном буфере
  57.     }
  58. };
  59.  
  60. class type : public publication, public sales {
  61.     double record_book_;
  62.     book book_;
  63.  
  64. public:
  65.     void getdata() override {
  66.         publication::getdata();
  67.         book_.getdata();
  68.         std::cout << "Record book: " << record_book_ << std::endl;
  69.         sales::getdata();
  70.     }
  71.  
  72.     void setdata() override {
  73.         publication::setdata();
  74.         book_.setdata();
  75.         std::cout << "enter the length of the book(entry): " << std::endl;
  76.         std::cin >> record_book_;
  77.         sales::setdata();
  78.     }
  79. };
  80.  
  81. int main() {
  82.     type book;
  83.     book.setdata();
  84.     book.getdata();
  85.     return 0;
  86. }
Add Comment
Please, Sign In to add comment