Advertisement
Ifrail

Less3 Task2

Nov 20th, 2019
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.78 KB | None | 0 0
  1. /*Обзорые полеты в 2D*/
  2.  
  3. /* Отлично, вы справились с навигацией, теперь пришло время использовать эти знания на настоящем корабле. Когда вы проходили обучение в академии вы уже написали код корабля, способного перемещаться в одномерном пространстве. Давайте изменим его так, чтобы он смог летать в настоящем двухмерном космосе.
  4.  
  5. Готовый код
  6. class SpaceShip {
  7. public:
  8.     // Остаток топлива
  9.     int fuelLeft;
  10.     // Вместимость топливного бака (максимум топлива)
  11.     int fuelMax;
  12.     // Название корабля
  13.     string name;
  14.  
  15.     void printStatus() {
  16.         cout << fuelLeft << " fuel left from " << fuelMax << " at the ship " << name << endl;
  17.     }
  18.  
  19.     void flight(int distance) {
  20.         fuelLeft -= distance;
  21.         if (fuelLeft < 0)
  22.             fuelLeft = 0;
  23.     }
  24.     void prepare() {
  25.         cin >> name >> fuelLeft >> fuelMax;
  26.     }
  27. };
  28.  
  29. Для этого:
  30. * добавим в класс SpaceShip, написанный ранее класс SpacePoint
  31. * изменим метод flight, чтобы он принимал объект класса SpacePoint в качестве параметра (конечная цель полета)
  32. * изменим метод prepare, чтобы он мог считать начальное положение корабля
  33.  
  34. В ответе выведите состояние корабля после каждого перелета
  35.  
  36. Входные данные:
  37. * Имя корабля (string)
  38. * Текущее количество топлива (int)
  39. * Максимальное количество топлива (int)
  40. * Координаты корабля X и Y (int)
  41.  
  42. */
  43.  
  44.  
  45. #include <iostream>
  46. #include <cmath>
  47. #include <string>
  48.  
  49. using namespace std;
  50.  
  51. // координаты объекта в космосе
  52. class SpacePoint {
  53. public:
  54.     int X, Y;
  55.  
  56.     int distance(SpacePoint point)  {
  57.         return sqrt(pow(X - point.X, 2) + pow(Y - point.Y, 2));
  58.     }
  59.  
  60.     void read() {
  61.         cin >> X >> Y;
  62.     }
  63. };
  64.  
  65.  
  66. class SpaceShip {
  67. public:
  68.     // Остаток топлива
  69.     int fuelLeft;
  70.     // Вместимость топливного бака (максимум топлива)
  71.     int fuelMax;
  72.     // Название корабля
  73.     string name;
  74.     //Координаты корабля
  75.     SpacePoint pos;
  76.  
  77.     void printStatus() {
  78.         cout << fuelLeft << " fuel left from " << fuelMax << " at the ship " << name << endl;
  79.     }
  80.  
  81.     void flight(SpacePoint pt) {
  82.         fuelLeft -= pos.distance(pt);
  83.         if (fuelLeft < 0) {
  84.             fuelLeft = 0;
  85.         }
  86.         pos = pt;
  87.     }
  88.  
  89.     void prepare() {
  90.         cin >> name >> fuelLeft >> fuelMax;
  91.         pos.read();
  92.     }
  93. };
  94.  
  95. int main() {
  96.     SpaceShip ship;
  97.     ship.prepare();
  98.  
  99.     SpacePoint pt1, pt2, pt3;
  100.     pt1.read();
  101.     pt2.read();
  102.     pt3.read();
  103.  
  104.     ship.flight(pt1);
  105.     ship.printStatus();
  106.     ship.flight(pt2);
  107.     ship.printStatus();
  108.     ship.flight(pt3);
  109.     ship.printStatus();
  110. }
  111.  
  112. /*
  113. Тест 1
  114. Ввод:
  115. Nostromo 56 78 12 12
  116. 0 0
  117. 4 4
  118. 5 5
  119. Вывод:
  120. 40 fuel left from 78 at the ship Nostromo
  121. 35 fuel left from 78 at the ship Nostromo
  122. 34 fuel left from 78 at the ship Nostromo
  123.  
  124. Тест 2
  125. Ввод:
  126. Nostromo 56 78 12 12
  127. 14 34
  128. 44 18
  129. 69 39
  130. Вывод:
  131. 85 fuel left from 112 at the ship Nostromo
  132. 51 fuel left from 112 at the ship Nostromo
  133. 19 fuel left from 112 at the ship Nostromo
  134.  
  135. Тест 3
  136. Ввод:
  137. Nostromo 135 144 -35 42
  138. 11 12
  139. 54 34
  140. 23 33
  141. Вывод:
  142. 81 fuel left from 144 at the ship Nostromo
  143. 33 fuel left from 144 at the ship Nostromo
  144. 2 fuel left from 144 at the ship Nostromo
  145. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement