Advertisement
Guest User

Untitled

a guest
Apr 19th, 2015
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.23 KB | None | 0 0
  1. <?php
  2.  
  3. interface Geometry {
  4. public function getValue ();
  5. public function getMass ();
  6. }
  7.  
  8. class Paral implements Geometry {
  9. protected $a;
  10. protected $b;
  11. protected $c;
  12. protected $density;
  13.  
  14. public function __construct($a, $b, $c, $density){
  15. $this->a = $a;
  16. $this->b = $b;
  17. $this->c = $c;
  18. $this->density = $density;
  19. }
  20.  
  21. public function getValue (){
  22. return $this->a * $this->b * $this->c;
  23. }
  24.  
  25. public function getMass (){
  26. return $this->getValue() * $this->density;
  27. }
  28.  
  29. public function __toString(){
  30. return (string)($this->getMass());
  31. }
  32. }
  33.  
  34. class Cube extends Paral implements Geometry {
  35. public function __construct($a, $density){
  36. $this->a = $a;
  37. $this->b = $a;
  38. $this->c = $a;
  39. $this->density = $density;
  40. }
  41. public function __toString(){
  42. return (string) parent::__toString();
  43. }
  44. }
  45.  
  46. class Sfera implements Geometry {
  47. private $r;
  48. private $density;
  49.  
  50. public function __construct($r, $density){
  51. $this->r = $r;
  52. $this->density = $density;
  53. }
  54.  
  55. public function getValue (){
  56. return 4/3*(3.14*$this->r*$this->r*$this->r);
  57. }
  58.  
  59. public function getMass (){
  60. return $this->getValue() * $this->density;
  61.  
  62. }
  63.  
  64. public function __toString(){
  65. return (string)($this->getMass());
  66. }
  67.  
  68. }
  69.  
  70. class Pyramid implements Geometry {
  71. private $a;
  72. private $b;
  73. private $c;
  74. private $h;
  75. private $density;
  76.  
  77. public function __construct($a, $b, $c, $h, $density){
  78. $this->a = $a;
  79. $this->b = $b;
  80. $this->c = $c;
  81. $this->h = $h;
  82. $this->density = $density;
  83. }
  84.  
  85. public function getValue (){
  86. $a = $this->a;
  87. $b = $this->b;
  88. $c = $this->c;
  89. $h = $this->h;
  90. $p = ($a+$b+$c)/2;
  91. $s = sqrt($p * ($p - $a) * ($p - $b)*($p - $c));
  92. return ($s*$h)/3;
  93. }
  94.  
  95. public function getMass (){
  96. return $this->getValue() * $this->density;
  97. }
  98.  
  99. public function __toString(){
  100. return (string)($this->getMass());
  101. }
  102. }
  103.  
  104.  
  105. $paral = new Paral(5,6,7.1,0.1);
  106. print "Обем и масса паралелепипеда:" . "\n";
  107. print $paral->getValue() . "\n";
  108. print $paral->getMass() . "\n";
  109. //print $paral;
  110.  
  111. $cube = new Cube(5,0.1);
  112. print "Обем и масса куба:" . "\n";
  113. print $cube->getValue() . "\n";
  114. print $cube->getMass() . "\n";
  115. //print $cube;
  116.  
  117. $sfera = new Sfera(3,0.1);
  118. print "Обем и масса сферы:" . "\n";
  119. print $sfera->getValue() . "\n";
  120. print $sfera->getMass() . "\n";
  121.  
  122. $pyramid = new Pyramid(2, 3, 4, 7, 0.1);
  123. print "Обем и масса пирамиды:" . "\n";
  124. print $pyramid->getValue() . "\n";
  125. print $pyramid->getMass() . "\n";
  126.  
  127. print "_______________________" . "\n" ;
  128. print "Рандомный выбор фигуры: \n";
  129. $figures = array(); //Рандомный выбор фигуры
  130. $figuresMass = array();
  131. for ($j = 0; $j < 4; $j++){
  132. for ($i = 0; $i < 4; $i++){
  133. $figures [$j][$i] = rand(0, 3);
  134. switch ($figures[$j][$i]) {
  135. case 0:
  136. $figures[$j][$i] =new Paral(5,6,7.1,0.1);
  137. $figuresMass[$j][$i] = round($figures[$j][$i]->getMass(), 1);
  138. break;
  139. case 1:
  140. $figures[$j][$i] = new Cube(5,0.1);
  141. $figuresMass[$j][$i] = round($figures[$j][$i]->getMass(), 1);
  142. break;
  143. case 2:
  144. $figures[$j][$i]=new Sfera(3,0.1);
  145. $figuresMass[$j][$i] = round($figures[$j][$i]->getMass(), 1);
  146. break;
  147. case 3:
  148. $figures[$j][$i]=new Pyramid(2, 3, 4, 7, 0.1);
  149. $figuresMass[$j][$i] = round($figures[$j][$i]->getMass(), 2);
  150. break;
  151. };
  152. }
  153. }
  154.  
  155. /*$figuresMass = array(
  156. "0"=> array(
  157. "0" => 4,
  158. "1" => 5,
  159. "2" => 3,
  160. "3" => 2,
  161. ),
  162. "1"=>array(
  163. "0" => 1,
  164. "1" => 6,
  165. "2" => 2,
  166. "3" => 7,
  167. ),
  168. "2"=>array(
  169. "0" => 3,
  170. "1" => 3,
  171. "2" => 8,
  172. "3" => 1,
  173. ),
  174. "3"=>array(
  175. "0" => 2,
  176. "1" => 1,
  177. "2" => 5,
  178. "3" => 4,
  179. ),
  180. );*/
  181. //$figuresMass[1][0] = 0;
  182.  
  183. $oneDArray = array();
  184. foreach ($figuresMass as $key_j => $val_j) {
  185. foreach ($figuresMass[$key_j] as $key_i => $val_i) {
  186. array_push($oneDArray, $val_i);
  187. echo "| " . $val_i . " ";
  188. }
  189. echo "|" ."\n";
  190. }
  191.  
  192. print "_______________________" . "\n" ;
  193.  
  194.  
  195. //Дигональная сортировка
  196. sort($oneDArray);
  197. $n = sizeof($figuresMass[1])-1;
  198. $figuresMass[0][$n] = $oneDArray[0];
  199. $i=0; $j=$n-1;
  200. $zsuv_j = 1; $zsuv_i = 0;
  201. for ($k=1; $k < sizeof($oneDArray); $k++){
  202. if ($i < $n && $j < $n && $j > 0) {
  203. $figuresMass[$i][$j] = $oneDArray[$k];
  204. if ($i == 0) $zsuv_j++;
  205. $i++; $j++;
  206. //echo "[$j] [$i]". "<br/>";
  207. }
  208. elseif ($i<$n && $j==$n) {
  209. $figuresMass[$i][$j] = $oneDArray[$k];
  210. $zsuv_i++;
  211. $i = $i-$zsuv_i;
  212. $j = $j-$zsuv_j;
  213. }
  214. elseif ($i==0 && $j==0) {
  215. $figuresMass[$i][$j] = $oneDArray[$k];
  216. $i++; $j++;
  217. }
  218. elseif ($i == $n && $j == $n) {
  219. $figuresMass[$i][$j] = $oneDArray[$k];
  220. $i = $i-$zsuv_i;
  221. $j = $j-$zsuv_j;
  222. }
  223. elseif ($i < $n && $j == 0) {
  224. $figuresMass[$i][$j] = $oneDArray[$k];
  225. $zsuv_i--;
  226. $i++; $j++;
  227. }
  228. elseif ($i == $n && $j < $n) {
  229. $figuresMass[$i][$j] = $oneDArray[$k];
  230. $zsuv_j--;
  231. $i = $i-$zsuv_i;
  232. $j = $j-$zsuv_j;
  233. }
  234. elseif ($i == $n && $j == 0) {
  235. $figuresMass[$i][$j] = $oneDArray[$k];
  236. $zsuv_j--;
  237. }
  238. else { echo "Ошибка " . "[$i] [$j]". "<br/>"; }
  239.  
  240. }
  241.  
  242.  
  243. echo "Справа на лево: " . "\n";
  244. foreach ($figuresMass as $key_j => $val_j) {
  245. foreach ($figuresMass[$key_j] as $key_i => $val_i){
  246. echo "| " . $val_i . " ";
  247. }
  248. echo "|" ."\n";
  249. }
  250.  
  251.  
  252. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement