Advertisement
fabis_sparks

CPPLab2-KursIvan

May 26th, 2018
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.37 KB | None | 0 0
  1. // CPPLab2-KursIvan-ver2.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <cmath>
  7.  
  8. using namespace std;
  9.  
  10. class Figure
  11. {
  12. public:
  13.     virtual double getSquare() = 0;
  14.     virtual double getPerimeter() = 0;
  15.     virtual void showFigureType() = 0;
  16. };
  17. class Rectangle : public Figure
  18. {
  19. private:
  20.     double width;
  21.     double height;
  22. public:
  23.     Rectangle(double w, double h) : width(w), height(h) {}
  24.     Rectangle() {}
  25.     double getSquare() override
  26.     {
  27.         return width * height;
  28.     }
  29.     double getPerimeter() override
  30.     {
  31.         return width * 2 + height * 2;
  32.     }
  33.     void showFigureType()
  34.     {
  35.         cout << "Rectangle" << endl;
  36.     }
  37. };
  38. class Square : public Rectangle {
  39. private:
  40.     double side;
  41. public:
  42.     Square(double s) : side(s) {}
  43.     double getSquare() override
  44.     {
  45.         return side * side;
  46.     }
  47.     double getPerimeter() override
  48.     {
  49.         return side * 4;
  50.     }
  51.     void showFigureType()
  52.     {
  53.         cout << "Square" << endl;
  54.     }
  55. };
  56. class Circle : public Figure
  57. {
  58. private:
  59.     double radius;
  60. public:
  61.     Circle(double r) : radius(r)
  62.     {
  63.     }
  64.     double getSquare() override
  65.     {
  66.         return radius * radius * 3.14;
  67.     }
  68.     double getPerimeter() override
  69.     {
  70.         return 2 * 3.14 * radius;
  71.     }
  72.     void showFigureType()
  73.     {
  74.         std::cout << "Circle" << std::endl;
  75.     }
  76. };
  77. // Объем усеченной пирамиды с прямоугольными основаниями
  78. class Pyramid_S1 {
  79. protected:
  80.  
  81. public:
  82.     double S1;
  83.     void calcS1(int SideA1, int SideB1) {
  84.         S1 = SideA1*SideB1;
  85.     }
  86. };
  87. class Pyramid_S2 {
  88. protected:
  89.  
  90. public:
  91.     double S2;
  92.     void calcS2(int SideA2, int SideB2) {
  93.         S2 = SideA2*SideB2;
  94.     }
  95. };
  96. class Pyramid_V : public Pyramid_S1, public Pyramid_S2
  97. {
  98. protected:
  99.  
  100. public:
  101.     double PyramidS = 0;
  102.     double Test = 0;
  103.     const double multiplier = 0.3333;
  104.     double getVol(int h) {
  105.         return (multiplier*h*(S1 + (sqrt(S1 * S2)) + S2));
  106.     }
  107. };
  108.  
  109.  
  110. int main()
  111. {
  112.     Figure *rect = new Rectangle(30, 50);
  113.     Figure *circle = new Circle(50);
  114.     Figure *square = new Square(30);
  115.     Pyramid_V pr_vol;
  116.     pr_vol.calcS1(2, 3);
  117.     pr_vol.calcS2(4, 5);
  118.     cout << "Shaped Pyramid volume: " << pr_vol.getVol(3) << endl << endl;
  119.     cout << "Rectangle square: " << rect->getSquare() << endl;
  120.     cout << "Circle square: " << circle->getSquare() << endl;
  121.     cout << "Square square: " << square->getSquare() << endl;
  122.     system("pause");
  123.     return 0;
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement