Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string.h>
- #include <stdlib.h>
- using namespace std;
- class Person
- {
- protected:
- char fio[100];
- char date_of_birth[12];
- char pol[5];
- Person* next; //указатель на следующиц объект класса
- Person* head; //указатель на начало списка
- void AddToList(Person* person) {
- if (!next) {
- next = person;
- }
- else {
- Person* man = next;
- while (man->next) man = man->next;
- man->next = person;
- }
- }
- public:
- void SetPersonInfo(const char* f, const char* d, const char* p)
- {
- next = nullptr; //говорим, что адрес следующего объекта - начало списка
- //заносим данные в объект
- strcpy_s(fio, f);
- strcpy_s(date_of_birth, d);
- strcpy_s(pol, p);
- head = this; //смена адреса начала списка
- }
- virtual void PersonInfo()
- {
- Person* temp = head;
- while (temp != nullptr)
- {
- cout << temp->fio << endl;
- cout << temp->date_of_birth << endl;
- cout << temp->pol << endl;
- temp = temp->next;
- }
- cout << endl;
- }
- Person() :head(nullptr) {}
- ~Person()
- {
- while (head != nullptr) {
- Person* temp = head->next;
- delete head;
- head = temp;
- }
- }
- };
- class Employee : public Person
- {
- protected:
- char position[30];
- };
- class Manager : public Employee
- {
- protected:
- char name_of_department[30];
- Person* employers;
- public:
- Manager(const char nOd[])
- {
- strcpy_s(name_of_department, nOd);
- }
- void addEmployee(Person* employee) {
- if (!employers) employers = employee;
- AddToList(employee);
- }
- };
- class Chief : public Employee
- {
- protected:
- char name_of_company[40];
- Person* managers;
- public:
- Chief(const char nOc[]) :managers(nullptr)
- {
- strcpy_s(name_of_company, nOc);
- }
- void addManager(Manager* manager) {
- if (!managers) managers = manager;
- AddToList(manager);
- }
- };
- int main()
- {
- Chief* ch = new Chief("Horns and Hooves");
- ch->SetPersonInfo("Ostap Bender", "12.12.1212", "m");
- Manager* m1 = new Manager("Horns");
- m1->SetPersonInfo("Shura", "01.01.0101", "m");
- Manager* m2 = new Manager("Hooves");
- m2->SetPersonInfo("Panikovsky", "10.10.1010", "m");
- ch->addManager(m1);
- ch->addManager(m2);
- Person* person = new Person();
- m1->addEmployee(person);
- m1->PersonInfo();
- ch->PersonInfo();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement