Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Обзорые полеты в 2D*/
- /* Отлично, вы справились с навигацией, теперь пришло время использовать эти знания на настоящем корабле. Когда вы проходили обучение в академии вы уже написали код корабля, способного перемещаться в одномерном пространстве. Давайте изменим его так, чтобы он смог летать в настоящем двухмерном космосе.
- Готовый код
- class SpaceShip {
- public:
- // Остаток топлива
- int fuelLeft;
- // Вместимость топливного бака (максимум топлива)
- int fuelMax;
- // Название корабля
- string name;
- void printStatus() {
- cout << fuelLeft << " fuel left from " << fuelMax << " at the ship " << name << endl;
- }
- void flight(int distance) {
- fuelLeft -= distance;
- if (fuelLeft < 0)
- fuelLeft = 0;
- }
- void prepare() {
- cin >> name >> fuelLeft >> fuelMax;
- }
- };
- Для этого:
- * добавим в класс SpaceShip, написанный ранее класс SpacePoint
- * изменим метод flight, чтобы он принимал объект класса SpacePoint в качестве параметра (конечная цель полета)
- * изменим метод prepare, чтобы он мог считать начальное положение корабля
- В ответе выведите состояние корабля после каждого перелета
- Входные данные:
- * Имя корабля (string)
- * Текущее количество топлива (int)
- * Максимальное количество топлива (int)
- * Координаты корабля X и Y (int)
- */
- #include <iostream>
- #include <cmath>
- #include <string>
- using namespace std;
- // координаты объекта в космосе
- class SpacePoint {
- public:
- int X, Y;
- int distance(SpacePoint point) {
- return sqrt(pow(X - point.X, 2) + pow(Y - point.Y, 2));
- }
- void read() {
- cin >> X >> Y;
- }
- };
- class SpaceShip {
- public:
- // Остаток топлива
- int fuelLeft;
- // Вместимость топливного бака (максимум топлива)
- int fuelMax;
- // Название корабля
- string name;
- //Координаты корабля
- SpacePoint pos;
- void printStatus() {
- cout << fuelLeft << " fuel left from " << fuelMax << " at the ship " << name << endl;
- }
- void flight(SpacePoint pt) {
- fuelLeft -= pos.distance(pt);
- if (fuelLeft < 0) {
- fuelLeft = 0;
- }
- pos = pt;
- }
- void prepare() {
- cin >> name >> fuelLeft >> fuelMax;
- pos.read();
- }
- };
- int main() {
- SpaceShip ship;
- ship.prepare();
- SpacePoint pt1, pt2, pt3;
- pt1.read();
- pt2.read();
- pt3.read();
- ship.flight(pt1);
- ship.printStatus();
- ship.flight(pt2);
- ship.printStatus();
- ship.flight(pt3);
- ship.printStatus();
- }
- /*
- Тест 1
- Ввод:
- Nostromo 56 78 12 12
- 0 0
- 4 4
- 5 5
- Вывод:
- 40 fuel left from 78 at the ship Nostromo
- 35 fuel left from 78 at the ship Nostromo
- 34 fuel left from 78 at the ship Nostromo
- Тест 2
- Ввод:
- Nostromo 56 78 12 12
- 14 34
- 44 18
- 69 39
- Вывод:
- 85 fuel left from 112 at the ship Nostromo
- 51 fuel left from 112 at the ship Nostromo
- 19 fuel left from 112 at the ship Nostromo
- Тест 3
- Ввод:
- Nostromo 135 144 -35 42
- 11 12
- 54 34
- 23 33
- Вывод:
- 81 fuel left from 144 at the ship Nostromo
- 33 fuel left from 144 at the ship Nostromo
- 2 fuel left from 144 at the ship Nostromo
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement