Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.38 KB | None | 0 0
  1. #include <iostream>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. using namespace std;
  6.  
  7. class Person
  8. {
  9. protected:
  10.     char fio[100];
  11.     char date_of_birth[12];
  12.     char pol[5];
  13.     Person* next; //указатель на следующиц объект класса
  14.     Person* head; //указатель на начало списка
  15.  
  16.     void AddToList(Person* person) {
  17.         if (!next) {
  18.             next = person;
  19.         }
  20.         else {
  21.             Person* man = next;
  22.  
  23.             while (man->next) man = man->next;
  24.  
  25.             man->next = person;
  26.         }
  27.     }
  28. public:
  29.     void SetPersonInfo(const char* f, const char* d, const char* p)
  30.     {
  31.         next = nullptr; //говорим, что адрес следующего  объекта - начало списка
  32.  
  33.  
  34.         //заносим данные в объект
  35.         strcpy_s(fio, f);
  36.         strcpy_s(date_of_birth, d);
  37.         strcpy_s(pol, p);
  38.         head = this; //смена адреса начала списка
  39.     }
  40.  
  41.     virtual void PersonInfo()
  42.     {
  43.         Person* temp = head;
  44.         while (temp != nullptr)
  45.         {
  46.             cout << temp->fio << endl;
  47.             cout << temp->date_of_birth << endl;
  48.             cout << temp->pol << endl;
  49.             temp = temp->next;
  50.         }
  51.         cout << endl;
  52.     }
  53.  
  54.     Person() :head(nullptr) {}
  55.     ~Person()
  56.     {
  57.         while (head != nullptr) {
  58.             Person* temp = head->next;
  59.             delete head;
  60.             head = temp;
  61.         }
  62.     }
  63. };
  64.  
  65. class Employee : public Person
  66. {
  67. protected:
  68.     char position[30];
  69. };
  70.  
  71. class Manager : public Employee
  72. {
  73. protected:
  74.     char name_of_department[30];
  75.     Person* employers;
  76. public:
  77.     Manager(const char nOd[])
  78.     {
  79.         strcpy_s(name_of_department, nOd);
  80.     }
  81.  
  82.     void addEmployee(Person* employee) {
  83.         if (!employers) employers = employee;
  84.  
  85.         AddToList(employee);
  86.     }
  87. };
  88.  
  89. class Chief : public Employee
  90. {
  91. protected:
  92.     char name_of_company[40];
  93.     Person* managers;
  94. public:
  95.     Chief(const char nOc[]) :managers(nullptr)
  96.     {
  97.         strcpy_s(name_of_company, nOc);
  98.     }
  99.  
  100.     void addManager(Manager* manager) {
  101.         if (!managers) managers = manager;
  102.  
  103.         AddToList(manager);
  104.     }
  105. };
  106.  
  107.  
  108. int main()
  109. {
  110.     Chief* ch = new Chief("Horns and Hooves");
  111.     ch->SetPersonInfo("Ostap Bender", "12.12.1212", "m");
  112.     Manager* m1 = new Manager("Horns");
  113.     m1->SetPersonInfo("Shura", "01.01.0101", "m");
  114.     Manager* m2 = new Manager("Hooves");
  115.     m2->SetPersonInfo("Panikovsky", "10.10.1010", "m");
  116.     ch->addManager(m1);
  117.     ch->addManager(m2);
  118.  
  119.     Person* person = new Person();
  120.     m1->addEmployee(person);
  121.  
  122.     m1->PersonInfo();
  123.  
  124.     ch->PersonInfo();
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement