Форум программистов, компьютерный форум CyberForum.ru

Создать иерархию классов CVehicle -> CPlane, ССаг и CShip - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Класс Queue http://www.cyberforum.ru/cpp-beginners/thread586018.html
Добрый день. Кто-то может помочь с программой? Заранее спасибо. Создать класс Queue - очередь. Поля – количество элементов и указатель для динамического выделения памяти. Определить конструкторы: по умолчанию, копий и с параметром, обозначающим необходимое количество элементов. Функции add и get для занесения и извлечения соответственно. Функции isEmpty и isFull для определения состояния...
C++ Нужно немного переделать программу нахождения компонент сильной связности в графе В общем задание такое, нужно переделать эту программу, я не знаю как это сделать, помогите люди добрые)) #include <iostream> #include <stdexcept> #include <algorithm> #include <iterator> #include <vector> class Graph { http://www.cyberforum.ru/cpp-beginners/thread586017.html
C++ Структура Vector
Добрый день, помогите пожалуйста переделать чуть-чуть программу. Нужно чтобы вектор имел указатель не на float, а на byte и добавить код с вычислением произведения отрицательных элементов вектора. Спасибо. #include "stdafx.h" #include <iostream> using namespace std; struct vector { float *V;
C++ Перестановка элементов очереди
Добрый день. У меня есть задание - Поменять местами первый и последний элементы в очереди. Вроде код написала правильный, но судя по тому, что не работает, то я ошибаюсь. #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #include <clocale>
C++ Двухмерный массив указателей из объектов http://www.cyberforum.ru/cpp-beginners/thread586005.html
//point1.h #ifndef POINT_H #define POINT_H #include <iostream> class CIntArray { public:
C++ Модули. Многофайловые проекты ДОброе время суток, не могли бы вы мне помочь написать програму, очень ну очень надо. желательно чем проше тем лутше, я чайник. задание. Модули. Многофайловые проекты Определить функцию, возвращающую количество недель до конца года. Выполнить перегрузку функции для следующих типов параметров: Структура «дата» (год, месяц, день). Три целочисленных параметра: год, месяц, день. Два... подробнее

Показать сообщение отдельно
Арианна
0 / 0 / 0
Регистрация: 17.03.2012
Сообщений: 22
24.05.2012, 23:10     Создать иерархию классов CVehicle -> CPlane, ССаг и CShip
Помогите исправить ошибочки:
Задание:
"Создать абстрактный класс CVehicle. На его основе реализовать классы CPlane, ССаг и CShip. Классы должны иметь возможность задавать и получать координаты, параметры средств передвижения (цена, скорость, год выпуска). Для самолета должна быть определена высота, для самолета и корабля - количество пассажиров. Для корабля - порт приписки. Написать программу, которая создает список объектов этих классов в динамической памяти. Программа должна содержать меню, позволяющее осуществить проверку всех методов классов."
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#include <iostream>
#include <list>
#include <memory>
#include <algorithm>
 
enum class Type
{
   Ship,
   Car,
   Plane
};
 
class CVehicle
{
public:
   struct Coords
   {
      Coords(int x_, int y_):x(x_), y(y_)
      {
      }
      Coords():Coords(0, 0)
      {
      }
      int x, y;
   };
  
   virtual ~CVehicle()
   {
   }
   
   const Coords& get_coords() const { return current_coords; }
   void set_coords(const Coords& c) { current_coords = c; }
   void set_coords(const int x, const int y) { set_coords(Coords(x, y)); }
   const double get_amount() const { return amount; }
   const size_t get_speed() const { return max_speed; }
   const size_t get_year() const { return year; }
   virtual Type get_type() const = 0;
protected:
   CVehicle(const Coords& coords, const double am, const size_t speed, const size_t y):
   current_coords(coords), amount(am), max_speed(speed), year(y)
   {
   }
   Coords current_coords;
   double amount;
   size_t max_speed;
   size_t year;
};
 
class IPassNumber
{
public:
   IPassNumber(const size_t pass_n):pass_no(pass_n)
   {
   }
   virtual ~IPassNumber()
   {
   }
   const size_t get_pass_no() const { return pass_no; }
private:
   size_t pass_no;
};
 
class CPlane : public CVehicle, public IPassNumber
{
public:
   CPlane
   (
      const Coords& coords, const double amount, const size_t speed, const size_t year,
      const size_t h, const size_t pass_no
   ):CVehicle(coords, amount, speed, year), IPassNumber(pass_no), height(h)
   {
   }
   CPlane
   (
      const double amount, const size_t speed, const size_t year,
      const size_t h, const size_t pass_no
   ):CPlane(Coords(), amount, speed, year, h, pass_no)
   {
   }
   virtual ~CPlane()
   {
   }
   const size_t get_height() const { return height; }
   virtual Type get_type() const { return Type::Plane; }
private:
   size_t height;
};
 
class CShip: public CVehicle, public IPassNumber
{
public:
   CShip
   (
      const Coords& coords, const double amount, const size_t speed, const size_t year,
      const size_t pass_no, const std::string& p
   ):CVehicle(coords, amount, speed, year), IPassNumber(pass_no), port(p)
   {
   }
   CShip
   (
      const double amount, const size_t speed, const size_t year,
      const size_t pass_no, const std::string& p
   ):CShip(Coords(), amount, speed, year, pass_no, p)
   {
   }
   virtual ~CShip()
   {
   }
   const std::string& get_port() const { return port; }
   virtual Type get_type() const { return Type::Ship; }
private:
   std::string port;
};
 
class CCar : public CVehicle
{
public:
   CCar
   (const Coords& coords, const double amount, const size_t speed, const size_t year):
   CVehicle(coords, amount, speed, year)
   {
   }
   CCar(const double amount, const size_t speed, const size_t year):
   CCar(Coords(), amount, speed, year)
   {
   }
   virtual ~CCar()
   {
   }
   virtual Type get_type() const { return Type::Car; }
};
 
typedef std::shared_ptr<CVehicle> base_t;
 
int main()
{
   std::list<base_t> lst = 
   {
      base_t(new CCar(100, 300, 1990)),
      base_t(new CShip(1000, 200, 1990, 1000, "MOW")),
      base_t(new CPlane(1000, 200, 1990, 10000, 500))
   };
   std::for_each(lst.begin(), lst.end(), [](const base_t& value)
   {
      const CVehicle::Coords& coords = value->get_coords();
      std::cout << "Coords: " << coords.x << " " << coords.y << std::endl;
      std::cout << "Speed: " << value->get_speed()
       << " Amount: " << value->get_amount()
       << " Year: " << value->get_year() << std::endl;
   });
   std::list<base_t>::iterator iter = lst.begin();
   ++iter;
   CShip* ship = dynamic_cast<CShip*>(iter->get());
   std::cout << "Pass no: " << ship->get_pass_no() << " Port: " << ship->get_port() << std::endl;
   ++iter;
   CPlane* plane = dynamic_cast<CPlane*>(iter->get());
   std::cout << "Pass no: " << plane->get_pass_no() << " Height: " << plane->get_height() << std::endl;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru