Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- interface Geometry {
- public function getValue ();
- public function getMass ();
- }
- class Paral implements Geometry {
- protected $a;
- protected $b;
- protected $c;
- protected $density;
- public function __construct($a, $b, $c, $density){
- $this->a = $a;
- $this->b = $b;
- $this->c = $c;
- $this->density = $density;
- }
- public function getValue (){
- return $this->a * $this->b * $this->c;
- }
- public function getMass (){
- return $this->getValue() * $this->density;
- }
- public function __toString(){
- return (string)($this->getMass());
- }
- }
- class Cube extends Paral implements Geometry {
- public function __construct($a, $density){
- $this->a = $a;
- $this->b = $a;
- $this->c = $a;
- $this->density = $density;
- }
- public function __toString(){
- return (string) parent::__toString();
- }
- }
- class Sfera implements Geometry {
- private $r;
- private $density;
- public function __construct($r, $density){
- $this->r = $r;
- $this->density = $density;
- }
- public function getValue (){
- return 4/3*(3.14*$this->r*$this->r*$this->r);
- }
- public function getMass (){
- return $this->getValue() * $this->density;
- }
- public function __toString(){
- return (string)($this->getMass());
- }
- }
- class Pyramid implements Geometry {
- private $a;
- private $b;
- private $c;
- private $h;
- private $density;
- public function __construct($a, $b, $c, $h, $density){
- $this->a = $a;
- $this->b = $b;
- $this->c = $c;
- $this->h = $h;
- $this->density = $density;
- }
- public function getValue (){
- $a = $this->a;
- $b = $this->b;
- $c = $this->c;
- $h = $this->h;
- $p = ($a+$b+$c)/2;
- $s = sqrt($p * ($p - $a) * ($p - $b)*($p - $c));
- return ($s*$h)/3;
- }
- public function getMass (){
- return $this->getValue() * $this->density;
- }
- public function __toString(){
- return (string)($this->getMass());
- }
- }
- $paral = new Paral(5,6,7.1,0.1);
- print "Обем и масса паралелепипеда:" . "\n";
- print $paral->getValue() . "\n";
- print $paral->getMass() . "\n";
- //print $paral;
- $cube = new Cube(5,0.1);
- print "Обем и масса куба:" . "\n";
- print $cube->getValue() . "\n";
- print $cube->getMass() . "\n";
- //print $cube;
- $sfera = new Sfera(3,0.1);
- print "Обем и масса сферы:" . "\n";
- print $sfera->getValue() . "\n";
- print $sfera->getMass() . "\n";
- $pyramid = new Pyramid(2, 3, 4, 7, 0.1);
- print "Обем и масса пирамиды:" . "\n";
- print $pyramid->getValue() . "\n";
- print $pyramid->getMass() . "\n";
- print "_______________________" . "\n" ;
- print "Рандомный выбор фигуры: \n";
- $figures = array(); //Рандомный выбор фигуры
- $figuresMass = array();
- for ($j = 0; $j < 4; $j++){
- for ($i = 0; $i < 4; $i++){
- $figures [$j][$i] = rand(0, 3);
- switch ($figures[$j][$i]) {
- case 0:
- $figures[$j][$i] =new Paral(5,6,7.1,0.1);
- $figuresMass[$j][$i] = round($figures[$j][$i]->getMass(), 1);
- break;
- case 1:
- $figures[$j][$i] = new Cube(5,0.1);
- $figuresMass[$j][$i] = round($figures[$j][$i]->getMass(), 1);
- break;
- case 2:
- $figures[$j][$i]=new Sfera(3,0.1);
- $figuresMass[$j][$i] = round($figures[$j][$i]->getMass(), 1);
- break;
- case 3:
- $figures[$j][$i]=new Pyramid(2, 3, 4, 7, 0.1);
- $figuresMass[$j][$i] = round($figures[$j][$i]->getMass(), 2);
- break;
- };
- }
- }
- /*$figuresMass = array(
- "0"=> array(
- "0" => 4,
- "1" => 5,
- "2" => 3,
- "3" => 2,
- ),
- "1"=>array(
- "0" => 1,
- "1" => 6,
- "2" => 2,
- "3" => 7,
- ),
- "2"=>array(
- "0" => 3,
- "1" => 3,
- "2" => 8,
- "3" => 1,
- ),
- "3"=>array(
- "0" => 2,
- "1" => 1,
- "2" => 5,
- "3" => 4,
- ),
- );*/
- //$figuresMass[1][0] = 0;
- $oneDArray = array();
- foreach ($figuresMass as $key_j => $val_j) {
- foreach ($figuresMass[$key_j] as $key_i => $val_i) {
- array_push($oneDArray, $val_i);
- echo "| " . $val_i . " ";
- }
- echo "|" ."\n";
- }
- print "_______________________" . "\n" ;
- //Дигональная сортировка
- sort($oneDArray);
- $n = sizeof($figuresMass[1])-1;
- $figuresMass[0][$n] = $oneDArray[0];
- $i=0; $j=$n-1;
- $zsuv_j = 1; $zsuv_i = 0;
- for ($k=1; $k < sizeof($oneDArray); $k++){
- if ($i < $n && $j < $n && $j > 0) {
- $figuresMass[$i][$j] = $oneDArray[$k];
- if ($i == 0) $zsuv_j++;
- $i++; $j++;
- //echo "[$j] [$i]". "<br/>";
- }
- elseif ($i<$n && $j==$n) {
- $figuresMass[$i][$j] = $oneDArray[$k];
- $zsuv_i++;
- $i = $i-$zsuv_i;
- $j = $j-$zsuv_j;
- }
- elseif ($i==0 && $j==0) {
- $figuresMass[$i][$j] = $oneDArray[$k];
- $i++; $j++;
- }
- elseif ($i == $n && $j == $n) {
- $figuresMass[$i][$j] = $oneDArray[$k];
- $i = $i-$zsuv_i;
- $j = $j-$zsuv_j;
- }
- elseif ($i < $n && $j == 0) {
- $figuresMass[$i][$j] = $oneDArray[$k];
- $zsuv_i--;
- $i++; $j++;
- }
- elseif ($i == $n && $j < $n) {
- $figuresMass[$i][$j] = $oneDArray[$k];
- $zsuv_j--;
- $i = $i-$zsuv_i;
- $j = $j-$zsuv_j;
- }
- elseif ($i == $n && $j == 0) {
- $figuresMass[$i][$j] = $oneDArray[$k];
- $zsuv_j--;
- }
- else { echo "Ошибка " . "[$i] [$j]". "<br/>"; }
- }
- echo "Справа на лево: " . "\n";
- foreach ($figuresMass as $key_j => $val_j) {
- foreach ($figuresMass[$key_j] as $key_i => $val_i){
- echo "| " . $val_i . " ";
- }
- echo "|" ."\n";
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement