kalin729

Nick Kursova

Mar 11th, 2021 (edited)
776
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.11 KB | None | 0 0
  1. #include <iostream>
  2. #include <bits/stdc++.h>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. //създаване на клас Room
  8. //създаване на конструктори
  9. //създаване на гетър и сетър методи
  10. //създаване на виртуален метод show, показващ информация за стаята
  11. //създаване на getArea, връщащ площта на стаята
  12. //създаване на метод compare, сравняващ 2 стаи - в скобите му се задава стаята, с която сравнява текущата
  13. class Room
  14. {
  15.     public:
  16.         Room(){
  17.             length = 0;
  18.             width = 0;
  19.             getArea();
  20.         };
  21.         Room(double getLength, double getWidth)
  22.         {
  23.             length = getLength;
  24.             width = getWidth;
  25.             getArea();
  26.         };
  27.  
  28.         double Getlength() { return length; }
  29.         void Setlength(double val) { length = val; }
  30.         double Getwidth() { return width; }
  31.         void Setwidth(double val) { width = val; }
  32.         virtual void show(){
  33.             cout << "Room length: " << length << endl;
  34.             cout << "Room width: " << width << endl;
  35.             cout << "Room area: " << area << endl;
  36.         }
  37.         double getArea(){
  38.             area = length * width;
  39.             return area;
  40.         }
  41.         //когато се извика този метод, той взема площта на стаята, от която е извикан
  42.         //също така взема и площта на стаята, която му е зададена
  43.         //сравнява
  44.         //извежда на екрана
  45.         //начинът. по който се извежда може да се промени!
  46.         void compare(Room toCompare){
  47.             double compArea = toCompare.getArea();
  48.  
  49.             if(area == compArea){
  50.                 cout << "Room A(" << area << ") is equal to room B("<< compArea <<")!" << endl;
  51.             }else{
  52.                 if(area>compArea){
  53.                      cout << "Room A(" << area << ") is bigger than room B("<< compArea <<")!" << endl;
  54.                 }else{
  55.                     cout << "Room A(" << area << ") is smaller than room B("<< compArea <<")!" << endl;
  56.                 }
  57.             }
  58.         }
  59.  
  60.     protected:
  61.  
  62.     private:
  63.         double length;
  64.         double width;
  65.         double area;
  66. };
  67.  
  68. //създаване на клас Office, който наследява клас Room
  69. //създаване на конструктори
  70. //конструкторите приемат параметри, от които част задават на конструктора на класа Room
  71. //създаване на гетър и сетър метод
  72. //създаване на виртуален метод show, показващ информация за стаята
  73. class Office : public Room {
  74.  
  75.     public:
  76.         Office():Room(0, 0){
  77.             business = "";
  78.         };
  79.         Office(string getBusiness, int getLength, int getWidth):Room(getLength, getWidth){
  80.             business = getBusiness;
  81.         };
  82.         string Getbusiness() { return business; }
  83.         void Setbusiness(string val) { business = val; }
  84.         void show(){
  85.             cout << "Business name: " << business << endl;
  86.             cout << "Room length: " << Room::Getlength() << endl;
  87.             cout << "Room width: " << Room::Getwidth() << endl;
  88.             cout << "Room area: " << Room::getArea() << endl;
  89.         }
  90.  
  91.     private:
  92.         string business;
  93.  
  94. };
  95.  
  96. //създаване на клас HospiceRoom, който наследява клас Room
  97. //създаване на конструктори
  98. //конструкторите приемат параметри, от които част задават на конструктора на класа Room
  99. //създаване на гетър и сетър методи
  100. //създаване на виртуален метод show, показващ информация за стаята
  101. //създаване на метод areaPerPerson, който взема стойността на площта на стаята и броят хора в нея
  102. //и връща площта, падаща се на човек
  103. //areaPerPerson връща стойност double
  104. class HospiceRoom : public Room {
  105.  
  106.     public:
  107.         HospiceRoom():Room(0, 0){
  108.             numPersons = 0;
  109.         };
  110.         HospiceRoom(int getNumPersons, int getLength, int getWidth):Room(getLength, getWidth){
  111.             numPersons = getNumPersons;
  112.         };
  113.         int GetnumPersons() { return numPersons; }
  114.         void SetnumPersons(int val) { numPersons = val; }
  115.         void show(){
  116.             cout << "Number of persons: " << numPersons << endl;
  117.             cout << "Room length: " << Room::Getlength() << endl;
  118.             cout << "Room width: " << Room::Getwidth() << endl;
  119.             cout << "Room area: " << Room::getArea() << endl;
  120.         }
  121.  
  122.         double areaPerPerson(){
  123.             return (double)(Room::getArea()/numPersons);
  124.         }
  125.  
  126.     private:
  127.         int numPersons;
  128.  
  129. };
  130.  
  131. int main()
  132. {
  133.  
  134.     //създаваме обекти от класа Room и викаме методи show и compare
  135.     cout << "==========ROOM CLASS EXAMPLE==========" << endl;
  136.     Room myroom(200, 300);
  137.     myroom.show();
  138.     Room toCompare(195, 295);
  139.     Room toCompare2(201, 301);
  140.     Room toCompare3(200, 300);
  141.     myroom.compare(toCompare);
  142.     myroom.compare(toCompare2);
  143.     myroom.compare(toCompare3);
  144.     cout << endl;
  145.  
  146.     //създаваме обект от класа HospiceRoom и викаме функции show и areaPerPerson
  147.     cout << "==========HOSPICE ROOM EXAMPLE==========" << endl;
  148.     HospiceRoom hpr(20, 4, 5);
  149.     hpr.show();
  150.     cout << "Area per single person: " << hpr.areaPerPerson() << endl;
  151.     cout << endl;
  152.  
  153.     //създаваме обект от класа Office и викаме методи show и compare като задаваме за сравняване площта
  154.     //на създадения обект от класа HospiceRoom
  155.     cout << "==========OFFICE ROOM EXAMPLE==========" << endl;
  156.     Office off("Turizam", 3, 6);
  157.     off.show();
  158.     off.compare(hpr);
  159.     cout << endl;
  160.  
  161.     //създаваме вектор от класа Room и го запълваме с стойности на вече създадени от нас обекти
  162.     cout << "==========VECTOR EXAMPLE==========" << endl;
  163.     vector<Room> roomVect {Room(myroom.Getlength(), myroom.Getwidth()), Room(hpr.Getlength(), hpr.Getwidth()), Room(off.Getlength(), off.Getwidth())};
  164.     roomVect.push_back(Room(toCompare.Getlength(), toCompare.Getwidth()));
  165.     roomVect.push_back(Room(toCompare2.Getlength(), toCompare2.Getwidth()));
  166.     roomVect.push_back(Room(toCompare3.Getlength(), toCompare3.Getwidth()));
  167.  
  168.     //извеждаме информацията за всеки обект като минаваме през всеки обект с for и викаме метод show
  169.     for(int i = 0; i < roomVect.size(); i++){
  170.         cout << "Now showing Room: " << i << endl;
  171.         roomVect[i].show();
  172.         cout << endl;
  173.     }
  174.  
  175.     //сортираме вектора по големина на площта
  176.     //условието на сортиране може да се промени
  177.     cout << "==========SORTING VECTOR==========" << endl;
  178.     sort(roomVect.begin(), roomVect.end(), [](Room room1, Room room2){return room1.getArea() < room2.getArea();});
  179.  
  180.     //извеждаме на същият принцип както по-горе
  181.     for(int i = 0; i < roomVect.size(); i++){
  182.         cout << "Now showing Room: " << i << endl;
  183.         roomVect[i].show();
  184.         cout << endl;
  185.     }
  186.  
  187.     //създаваме масив от указатели и го запълваме с вече създадени обекти от класа Room
  188.     cout << "==========POINTER ARRAY EXAMPLE==========" << endl;
  189.     Room *roomArr[5] = {new Room(myroom.Getlength(), myroom.Getwidth()),new Room(hpr.Getlength(), hpr.Getwidth())};
  190.     roomArr[2] = new Room(off.Getlength(), off.Getwidth());
  191.     roomArr[3] = new Room(toCompare.Getlength(), toCompare.Getwidth());
  192.     roomArr[4] = new Room(toCompare2.Getlength(), toCompare2.Getwidth());
  193.  
  194.     //извеждаме масива на същия принцип като примера с вектора
  195.     for(int i = 0; i < 5; i++){
  196.         cout << "Now showing Room: " << i << endl;
  197.         roomArr[i]->show();
  198.         cout << endl;
  199.     }
  200.  
  201.     //тук показваме как се променят стойности чрез setter метод
  202.     //и как това влияе на резултата, който връща метода areaPerPerson
  203.     cout << "==========CHANGING AREA PER PERSON==========" << endl;
  204.     cout << "Area Per Person before change: " << hpr.areaPerPerson() << endl;
  205.     hpr.Setlength(7);
  206.     hpr.Setwidth(7);
  207.     cout << "Area Per Person after change: " << hpr.areaPerPerson() << endl;
  208.  
  209.     return 0;
  210. }
  211.  
Add Comment
Please, Sign In to add comment