emotrend

Untitled

Jun 10th, 2019
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.35 KB | None | 0 0
  1. <?php
  2.  
  3. class Car
  4. {
  5.  
  6. /**
  7. * @var string
  8. */
  9. private $model;
  10.  
  11.  
  12. /**
  13. * @var string
  14. */
  15. private $engine;
  16.  
  17.  
  18. /**
  19. * @var int
  20. */
  21. private $weight;
  22.  
  23.  
  24. /**
  25. * @var string
  26. */
  27. private $color;
  28.  
  29.  
  30. public function __construct(string $model, Engine $engine)
  31. {
  32. $this->model = $model;
  33. $this->engine = $engine;
  34. $this->weight = 'n/a';
  35. $this->color = 'n/a';
  36. }
  37.  
  38. public function setWeight(int $weight): void
  39. {
  40. $this->weight = $weight;
  41. }
  42.  
  43. public function setColor(string $color): void
  44. {
  45. $this->color = $color;
  46. }
  47.  
  48. public function __toString()
  49. {
  50. return "{$this->model}:\n{$this->engine} Weight: {$this->weight}\n Color: {$this->color}\n";
  51. }
  52. }
  53.  
  54. class Engine
  55. {
  56.  
  57. /**
  58. * @var string
  59. */
  60. private $model;
  61.  
  62.  
  63. /**
  64. * @var int
  65. */
  66. private $power;
  67.  
  68.  
  69. /**
  70. * @var int
  71. */
  72. private $displacement;
  73.  
  74.  
  75. /**
  76. * @var string
  77. */
  78. private $efficiency;
  79.  
  80.  
  81. public function __construct(string $model, int $power)
  82. {
  83. $this->model = $model;
  84. $this->power = $power;
  85. $this->displacement = 'n/a';
  86. $this->efficiency = 'n/a';
  87. }
  88.  
  89. public function setDisplacement(int $displacement): void
  90. {
  91. $this->displacement = $displacement;
  92. }
  93.  
  94. public function setEfficiency(string $efficiency): void
  95. {
  96. $this->efficiency = $efficiency;
  97. }
  98.  
  99. public function getModel()
  100. {
  101. return $this->model;
  102. }
  103.  
  104. public function __toString()
  105. {
  106. return " {$this->model}: \n Power: {$this->power}\n Displacement: {$this->displacement}\n Efficiency: {$this->efficiency}\n";
  107. }
  108. }
  109.  
  110. $engineNumber = intval(readline());
  111.  
  112. $engines = [];
  113. $cars = [];
  114.  
  115. for($i = 0; $i < $engineNumber; $i++) {
  116. $engineData = explode(" ", readline());
  117.  
  118. $engineModel = $engineData[0];
  119. $enginePower = $engineData[1];
  120.  
  121. $engine = new Engine($engineModel, $enginePower);
  122.  
  123. $displacement = $engineData[2];
  124.  
  125. if (count($engineData) === 3) {
  126.  
  127. if(is_numeric($displacement)) {
  128. $engine->setDisplacement(intval($displacement));
  129. } else {
  130. $engine->setEfficiency($engineData[2]);
  131. }
  132.  
  133. }
  134.  
  135. if (count($engineData) === 4) {
  136. $engine->setDisplacement(intval($displacement));
  137. $engine->setEfficiency($engineData[3]);
  138. }
  139.  
  140. $engines[] = $engine;
  141. }
  142.  
  143. $carNumber = intval(readline());
  144.  
  145. for ($i = 0; $i < $carNumber; $i++) {
  146. $carData = explode(" ", readline());
  147.  
  148. $carModel = $carData[0];
  149. $engineModel = $carData[1];
  150.  
  151. $engine = array_filter($engines, function(Engine $currentEngine) use($engineModel){
  152. return $currentEngine->getModel() === $engineModel;
  153. });
  154.  
  155. $engine = array_pop($engine);
  156.  
  157. $car = new Car($carModel, $engine);
  158.  
  159. if (count($carData) === 3) {
  160.  
  161. if(is_numeric($carData[2])) {
  162. $car->setWeight(intval($engineData[2]));
  163. } else {
  164. $car->setColor($carData[2]);
  165. }
  166. }
  167.  
  168. if (count($carData) === 4) {
  169. $car->setWeight(intval($carData[2]));
  170. $car->setColor($carData[3]);
  171. }
  172.  
  173.  
  174. $cars[] = $car;
  175. }
  176.  
  177. foreach ($cars as $car) {
  178. echo $car;
  179. }
Advertisement
Add Comment
Please, Sign In to add comment