Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.18 KB | None | 0 0
  1. // Лаба 8(1) Семестр 3.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
  2. //
  3.  
  4. #include <iostream>
  5. using namespace std;
  6.  
  7. class Engine
  8. {
  9. public:
  10. Engine(const char* engine_name, const char* pow)
  11. {
  12. name = engine_name;
  13. power = pow;
  14. next = 0;
  15. add_to_list();
  16. }
  17. const char* get_name() { return name; }
  18. const char* pow_name() { return power; }
  19.  
  20. virtual~Engine() {}
  21. virtual void show(int pos) = 0;
  22. static void print_list()
  23. {
  24. Engine* now = list_begin;
  25. int pos = 0;
  26. while (now != 0)
  27. {
  28. pos++;
  29. now->show(pos);
  30. now = now->next;
  31. }
  32. }
  33. static void cleanup_list()
  34. {
  35. Engine* now = list_begin;
  36. while (now != 0)
  37. {
  38. Engine* x = now;
  39. now = now->next;
  40. delete x;
  41. }
  42. list_begin = 0;
  43. }
  44. static Engine* list_begin;
  45. private:
  46. void add_to_list()
  47. {
  48. if (list_begin == 0)
  49. {
  50. list_begin = this;
  51. }
  52. else
  53. {
  54. Engine* last = list_begin;
  55. while (last->next != 0)
  56. last = last->next;
  57. last->next = this;
  58. }
  59. }
  60. const char* name;
  61. const char* power;
  62. Engine* next;
  63. Engine& operator=(const Engine&);
  64. };
  65.  
  66.  
  67. class JetEngine : public Engine
  68. {
  69. public:
  70. JetEngine(const char* name, const char* pow) :Engine(name, pow) {}
  71. virtual void show(int pos)
  72. {
  73. cout << pos << ":that JetEngine\t" << get_name() << "\nМощность:\t\t=" << pow_name() << endl;
  74. cout << "Реактивные двигатели начали использовать с 1930 года" << endl;
  75. }
  76. };
  77.  
  78. class DieselEngine :public Engine
  79. {
  80. public:
  81. DieselEngine(const char* name, const char* pow) :Engine(name, pow) {}
  82. virtual void show(int pos)
  83. {
  84. cout << pos << ":that DieselEngine\t" << get_name() << "\nМощность:\t\t=" << pow_name() << endl;
  85. }
  86. };
  87.  
  88. class EngineIC : public DieselEngine
  89. {
  90. public:
  91. EngineIC(const char* name, const char* pow) : DieselEngine(name, pow) {}
  92. virtual void show(int pos)
  93. {
  94. cout << pos << ":that EngineIC\t\t" << get_name() << "\nМощность:\t\t=" << pow_name() << endl;
  95. cout << "Используемое топливо: бензин, дизель" << endl;
  96. // cout << "" << endl; тут можно что-нибудь дописать про то что двигатель не обяз. ДВС и т д
  97. }
  98. };
  99.  
  100. Engine* Engine::list_begin = 0;
  101.  
  102. int main()
  103. {
  104. setlocale(LC_CTYPE, "Russian");
  105. new JetEngine("AL-31F", "9800w");
  106. new DieselEngine("M51", "2000w");
  107. new DieselEngine("M57", "2200w");
  108. new JetEngine("TF-39", "7700w");
  109. new EngineIC("Mazda Skyactiv 2.0", "4000w");
  110. new EngineIC("WV Polo 1,6", "4400w");
  111. Engine::print_list();
  112. cout << "Очистка списка" << endl;
  113. cout << endl;
  114. Engine::cleanup_list();
  115. new JetEngine("F-107", "10400w");
  116. new DieselEngine("N47/M47", "3200w");
  117. new DieselEngine("M20", "3600w");
  118. new JetEngine("F-107(2)", "17550w");
  119. new DieselEngine("Phantom", "3900w");
  120. new DieselEngine("N57", "4000w");
  121. new EngineIC("Magnum 318", "6200w");
  122. new EngineIC("A8 W12", "7400w");
  123. Engine::print_list();
  124. cout << "Очистка списка" << endl;
  125. Engine::cleanup_list();
  126. system("pause");
  127. return 0;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement