Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <bits/stdc++.h>
- #include <vector>
- using namespace std;
- //създаване на клас Room
- //създаване на конструктори
- //създаване на гетър и сетър методи
- //създаване на виртуален метод show, показващ информация за стаята
- //създаване на getArea, връщащ площта на стаята
- //създаване на метод compare, сравняващ 2 стаи - в скобите му се задава стаята, с която сравнява текущата
- class Room
- {
- public:
- Room(){
- length = 0;
- width = 0;
- getArea();
- };
- Room(double getLength, double getWidth)
- {
- length = getLength;
- width = getWidth;
- getArea();
- };
- double Getlength() { return length; }
- void Setlength(double val) { length = val; }
- double Getwidth() { return width; }
- void Setwidth(double val) { width = val; }
- virtual void show(){
- cout << "Room length: " << length << endl;
- cout << "Room width: " << width << endl;
- cout << "Room area: " << area << endl;
- }
- double getArea(){
- area = length * width;
- return area;
- }
- //когато се извика този метод, той взема площта на стаята, от която е извикан
- //също така взема и площта на стаята, която му е зададена
- //сравнява
- //извежда на екрана
- //начинът. по който се извежда може да се промени!
- void compare(Room toCompare){
- double compArea = toCompare.getArea();
- if(area == compArea){
- cout << "Room A(" << area << ") is equal to room B("<< compArea <<")!" << endl;
- }else{
- if(area>compArea){
- cout << "Room A(" << area << ") is bigger than room B("<< compArea <<")!" << endl;
- }else{
- cout << "Room A(" << area << ") is smaller than room B("<< compArea <<")!" << endl;
- }
- }
- }
- protected:
- private:
- double length;
- double width;
- double area;
- };
- //създаване на клас Office, който наследява клас Room
- //създаване на конструктори
- //конструкторите приемат параметри, от които част задават на конструктора на класа Room
- //създаване на гетър и сетър метод
- //създаване на виртуален метод show, показващ информация за стаята
- class Office : public Room {
- public:
- Office():Room(0, 0){
- business = "";
- };
- Office(string getBusiness, int getLength, int getWidth):Room(getLength, getWidth){
- business = getBusiness;
- };
- string Getbusiness() { return business; }
- void Setbusiness(string val) { business = val; }
- void show(){
- cout << "Business name: " << business << endl;
- cout << "Room length: " << Room::Getlength() << endl;
- cout << "Room width: " << Room::Getwidth() << endl;
- cout << "Room area: " << Room::getArea() << endl;
- }
- private:
- string business;
- };
- //създаване на клас HospiceRoom, който наследява клас Room
- //създаване на конструктори
- //конструкторите приемат параметри, от които част задават на конструктора на класа Room
- //създаване на гетър и сетър методи
- //създаване на виртуален метод show, показващ информация за стаята
- //създаване на метод areaPerPerson, който взема стойността на площта на стаята и броят хора в нея
- //и връща площта, падаща се на човек
- //areaPerPerson връща стойност double
- class HospiceRoom : public Room {
- public:
- HospiceRoom():Room(0, 0){
- numPersons = 0;
- };
- HospiceRoom(int getNumPersons, int getLength, int getWidth):Room(getLength, getWidth){
- numPersons = getNumPersons;
- };
- int GetnumPersons() { return numPersons; }
- void SetnumPersons(int val) { numPersons = val; }
- void show(){
- cout << "Number of persons: " << numPersons << endl;
- cout << "Room length: " << Room::Getlength() << endl;
- cout << "Room width: " << Room::Getwidth() << endl;
- cout << "Room area: " << Room::getArea() << endl;
- }
- double areaPerPerson(){
- return (double)(Room::getArea()/numPersons);
- }
- private:
- int numPersons;
- };
- int main()
- {
- //създаваме обекти от класа Room и викаме методи show и compare
- cout << "==========ROOM CLASS EXAMPLE==========" << endl;
- Room myroom(200, 300);
- myroom.show();
- Room toCompare(195, 295);
- Room toCompare2(201, 301);
- Room toCompare3(200, 300);
- myroom.compare(toCompare);
- myroom.compare(toCompare2);
- myroom.compare(toCompare3);
- cout << endl;
- //създаваме обект от класа HospiceRoom и викаме функции show и areaPerPerson
- cout << "==========HOSPICE ROOM EXAMPLE==========" << endl;
- HospiceRoom hpr(20, 4, 5);
- hpr.show();
- cout << "Area per single person: " << hpr.areaPerPerson() << endl;
- cout << endl;
- //създаваме обект от класа Office и викаме методи show и compare като задаваме за сравняване площта
- //на създадения обект от класа HospiceRoom
- cout << "==========OFFICE ROOM EXAMPLE==========" << endl;
- Office off("Turizam", 3, 6);
- off.show();
- off.compare(hpr);
- cout << endl;
- //създаваме вектор от класа Room и го запълваме с стойности на вече създадени от нас обекти
- cout << "==========VECTOR EXAMPLE==========" << endl;
- vector<Room> roomVect {Room(myroom.Getlength(), myroom.Getwidth()), Room(hpr.Getlength(), hpr.Getwidth()), Room(off.Getlength(), off.Getwidth())};
- roomVect.push_back(Room(toCompare.Getlength(), toCompare.Getwidth()));
- roomVect.push_back(Room(toCompare2.Getlength(), toCompare2.Getwidth()));
- roomVect.push_back(Room(toCompare3.Getlength(), toCompare3.Getwidth()));
- //извеждаме информацията за всеки обект като минаваме през всеки обект с for и викаме метод show
- for(int i = 0; i < roomVect.size(); i++){
- cout << "Now showing Room: " << i << endl;
- roomVect[i].show();
- cout << endl;
- }
- //сортираме вектора по големина на площта
- //условието на сортиране може да се промени
- cout << "==========SORTING VECTOR==========" << endl;
- sort(roomVect.begin(), roomVect.end(), [](Room room1, Room room2){return room1.getArea() < room2.getArea();});
- //извеждаме на същият принцип както по-горе
- for(int i = 0; i < roomVect.size(); i++){
- cout << "Now showing Room: " << i << endl;
- roomVect[i].show();
- cout << endl;
- }
- //създаваме масив от указатели и го запълваме с вече създадени обекти от класа Room
- cout << "==========POINTER ARRAY EXAMPLE==========" << endl;
- Room *roomArr[5] = {new Room(myroom.Getlength(), myroom.Getwidth()),new Room(hpr.Getlength(), hpr.Getwidth())};
- roomArr[2] = new Room(off.Getlength(), off.Getwidth());
- roomArr[3] = new Room(toCompare.Getlength(), toCompare.Getwidth());
- roomArr[4] = new Room(toCompare2.Getlength(), toCompare2.Getwidth());
- //извеждаме масива на същия принцип като примера с вектора
- for(int i = 0; i < 5; i++){
- cout << "Now showing Room: " << i << endl;
- roomArr[i]->show();
- cout << endl;
- }
- //тук показваме как се променят стойности чрез setter метод
- //и как това влияе на резултата, който връща метода areaPerPerson
- cout << "==========CHANGING AREA PER PERSON==========" << endl;
- cout << "Area Per Person before change: " << hpr.areaPerPerson() << endl;
- hpr.Setlength(7);
- hpr.Setwidth(7);
- cout << "Area Per Person after change: " << hpr.areaPerPerson() << endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment