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

Программирование на С++ с использованием классов. Массивы объектов. Наследование - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Коммивояжер http://www.cyberforum.ru/cpp-beginners/thread224522.html
Доброго времени суток! Для полного графа и n <= 20 нужно написать программу для задачи коммивояжера за приемлемое время Какой алгоритм - возможен ли полный перебор, ветвей и границ или ? Спасибо за любую идею или ссылку!
C++ Таинственный макрос Здравствуйте, в исходники nginx (веб-сервер) есть такой макрос: int ngx_cdecl main(int argc, char *const *argv) { //...некий код... } Он встречается еще и в других функциях. Само его объявление пустое (он в конце): #if !(NGX_WIN32) http://www.cyberforum.ru/cpp-beginners/thread224518.html
Рекурсивная сортировка разделением C++
ниже привел код рекурсивной сортировки разделением, но она сортирует нормально, если в массиве представлены только уникальные элементы, а если появляются одинаковые, то зацикливается... не могу понять в чем дело... вызов в main Qsort(0, a.size-1); где a - объект класса vector template <class T> void vector<T>::Qsort(int l, int r) { if(l < r) { int k = Partition(l, r); ...
C++ Люди, кто может помочь в написании проги
Составить прогу на С++, которая кодирует текст, алгоритмом Лемпела-Зива (Не LZW). Выводится в текствой файл двоичный код каждого символа. Выводится CRC-код текстового файла. ******************************************************************** Перерыл весь инет, но подобного не смог найти, одни архиваторы, а мне надо закодировать текст введённый пользователем. Очень буду благодарен всем, кто...
C++ Прямое обращение к памяти http://www.cyberforum.ru/cpp-beginners/thread223680.html
Доброго всем времени суток. Товарищи, помогите пожалуйста найти литературу для компилятора DJGPP. Точнее для особенностей данного компилятора. В частности интересует прямое обращение к ОЗУ. Насколько я понял данный компилятор использует 32-битный режим, т.е. может позволить обращение ко всему пространству ОЗУ. Задача заключается в том, чтобы по заданному адресу записать в оперативную память...
C++ Перевести с С на С++ #include <iostream> void inversion(double **A, int N) { double temp; double **E = new double *; for (int i = 0; i < N; i++) E = new double ; подробнее

Показать сообщение отдельно
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
06.01.2011, 13:02     Программирование на С++ с использованием классов. Массивы объектов. Наследование
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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
#include <iostream>
 
//-----------------------------------------------------------------------------
 
class Circle
{
public:
    Circle();
    Circle(double);
 
    void set_r(double);
    double get_r() const;
 
    double area() const;
    double circuit() const;
 
    void print_area() const;
    void print_circuit() const;
 
private:
    double _r;
    
    static const double Pi;
};
 
const double Circle::Pi = 3.14159265358979323;
 
Circle::Circle():
_r(1)
{
}
 
Circle::Circle(double r):
_r(r)
{
}
 
void Circle::set_r(double r)
{
    _r = r;
}
 
double Circle::get_r() const
{
    return _r;
}
 
double Circle::area() const
{
    return Pi * _r * _r;
}
 
double Circle::circuit() const
{
    return 2 * Pi * _r;
}
 
void Circle::print_area() const
{
    std::cout << area();
}
 
void Circle::print_circuit() const
{
    std::cout << circuit();
}
 
//-----------------------------------------------------------------------------
 
class Cylinder: public Circle
{
public:
    Cylinder();
    Cylinder(double, double);
 
    void set_h(double);
    double get_h() const;
 
    double area() const;
    double volume() const;
 
    void print_area() const;
    void print_volume() const;
 
private:
    double _h;
};
 
Cylinder::Cylinder():
Circle(),
_h(1)
{
}
 
Cylinder::Cylinder(double r, double h):
Circle(r),
_h(h)
{
}
 
void Cylinder::set_h(double h)
{
    _h = h;
}
 
double Cylinder::get_h() const
{
    return _h;
}
 
double Cylinder::area() const
{
    return Circle::circuit() * (get_r() + _h);
}
 
double Cylinder::volume() const
{
    return Circle::area() * _h;
}
 
void Cylinder::print_area() const
{
    std::cout << area();
}
 
void Cylinder::print_volume() const
{
    std::cout << volume();
}
 
//-----------------------------------------------------------------------------
 
const int N = 3;
const int M = 5;
 
int main()
{
    Circle circle_arr[N];
    Cylinder cylinder_arr[M];
 
    double max_circle_area;
    double avg_cylinder_volume = 0;
 
    std::cout << "Circles:" << std::endl;
 
    for (int i = 0; i < N; ++i)
    {
        double r;
 
        std::cout << "Enter r [" << i << "]: ";
        std::cin >> r;
 
        circle_arr[i].set_r(r);
 
        if (i == 0)
            max_circle_area = circle_arr[0].area();
        else
        {
            double area = circle_arr[i].area();
 
            if (max_circle_area < area)
                max_circle_area = area;
        }
    }
 
    std::cout << std::endl;
 
    std::cout << "Cylinders:" << std::endl;
 
    for (int i = 0; i < M; ++i)
    {
        double r;
        double h;
 
        std::cout << "Enter r [" << i << "]: ";
        std::cin >> r;
        std::cout << "Enter h [" << i << "]: ";
        std::cin >> h;
 
        cylinder_arr[i].set_r(r);
        cylinder_arr[i].set_h(h);
 
        avg_cylinder_volume += cylinder_arr[i].volume();
    }
 
    avg_cylinder_volume /= M;
 
    std::cout << std::endl;
 
    std::cout << "Max circle area: " << max_circle_area << std::endl;
    std::cout << "Avg cylinder volume: " << avg_cylinder_volume << std::endl;
 
    return 0;
}
Добавлено через 4 минуты
volovzi, да это просто непонимание сути наследование (как бы абсурдно это не звучало - преподаватель не понимает то, что преподаёт студентам о_О). Правильнее было бы сделать абстрактный класс Shape, а от него наследовать и круг, и цилиндр. Короче позднее связывание рулит)))
 
Текущее время: 12:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru