fork download
  1. <?php
  2. class Rectangle
  3. {
  4. public $type, $a, $b;
  5. public $area = 0;
  6. public function Calc_rect_area()
  7. {
  8. $this->area= $this->a * $this->b;
  9. }
  10. }
  11.  
  12. class Circle
  13. {
  14. public $type, $radius;
  15. public $area = 0;
  16. public function Calc_circle_area()
  17. {
  18. $this->area = $this->radius * $this->radius * 3.14;
  19. }
  20. }
  21.  
  22. class Pyramid
  23. {
  24. // длина основания, ширина основания, длина стороны
  25. public $type,$a, $b, $c;
  26. public $area = 0;
  27. public function Calc_pyram_area()
  28. {
  29. $checkPyr = 2 * $this->c - $this->a - $this->b; //проверяем стороны пирамиды
  30. if ($checkPyr < 0) {
  31. return 0; //пирамида не омжет существовать
  32. } elseif ($checkPyr == 0) {
  33. return $this->a * $this->b; //вершина пирамиды находится на плоскости основания, то есть получился прямоугольник
  34. } else {
  35. $firstTriangleArea = $this->b / 4 * sqrt(4 * $this->c * $this->c - $this->b * $this->b);
  36. $secondTriangleArea = $this->a / 4 * sqrt(4 * $this->c * $this->c - $this->a * $this->a);
  37. $this->area = $this->a * $this->b + 2 * $firstTriangleArea + 2 * $secondTriangleArea;
  38. }
  39. }
  40. }
  41.  
  42. $figures = Create_figures();//запускаем функцию создания фигур \
  43. //sort
  44. Show_figures($figures); //выводим типы созданных фигур
  45.  
  46. //далее мы создаем 5 фигур с рандомнями полями, рандомных типов, считаем их площади
  47. function Create_figures()
  48. {
  49. $figures = [];
  50. for ($i=0; $i<5; $i++){
  51. $typeID = rand(0,3);
  52. if ($typeID == 0) {
  53. $figure = new Rectangle();
  54. $figure->type = "Rectangle";
  55. $figure->a = rand(1,10);
  56. $figure->b = rand(1,10);
  57. $figure->Calc_rect_area();
  58. $figure->area;
  59.  
  60. } elseif ( $typeID == 1) {
  61. $figure = new Circle();
  62. $figure->type = "Circle";
  63. $figure->radius = rand(1,10);
  64. $figure->Calc_circle_area();
  65. $figure->area;
  66.  
  67. } else {
  68. $figure = new Pyramid();
  69. $figure->type = "Pyramid";
  70. $figure->a = rand(1,10);
  71. $figure->b = rand(1,10);
  72. $figure->c = rand(1,10);
  73. $figure->Calc_pyram_area();
  74. $figure->area;
  75. }
  76. $figures[] = $figure;
  77.  
  78. }
  79. return $figures;
  80. }
  81.  
  82. //далее функция для вывода типов фигур перебором
  83. function Show_figures($figures) {
  84. $number = 1;
  85. foreach ($figures as $figure) {
  86. if ($figure->type == "Rectangle") {
  87. echo "{$number}.{$figure->type}, площадь фигуры {$figure->area}<br/>";
  88. } elseif ($figure->type == "Circle") {
  89. echo "{$number}.{$figure->type}, площадь фигуры {$figure->area}<br/>";
  90. } else {
  91. echo "{$number}.{$figure->type}, площадь фигуры {$figure->area}<br/>";
  92. }
  93. $number++;
  94. }
  95. }
  96.  
  97. ?>
Success #stdin #stdout 0s 82560KB
stdin
Standard input is empty
stdout
1.Circle, площадь фигуры 78.5<br/>2.Pyramid, площадь фигуры 110.011545795<br/>3.Pyramid, площадь фигуры 0<br/>4.Circle, площадь фигуры 3.14<br/>5.Pyramid, площадь фигуры 88.780147652018<br/>