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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
Antot N...
0 / 0 / 0
Регистрация: 25.01.2011
Сообщений: 14
25.01.2011, 14:03     Программирование на С++ с использованием классов. Массивы объектов. Наследование #1
Помогите с программированием,пожалуйста!!!!!!!!!!!!
Создать класс равносторонний треугольник, член класса - длина стороны.
Предусмотреть в классе методы вычисления и вывода сведений о фигуре –
периметр, площадь. Создать производный класс – правильная треугольная
призма с высотой H, добавить в класс метод определения объема фигуры,
перегрузить методы расчета площади и вывода сведений о фигуре. Написать
программу, демонстрирующую работу с классом: дано N треугольников и M
призм. Найти количество треугольников, у которых площадь меньше средней
площади треугольников, и призму с наибольшим объемом.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2011, 14:03     Программирование на С++ с использованием классов. Массивы объектов. Наследование
Посмотрите здесь:

C++ Программирование с использованием классов.
C++ Программирование на С++ с использованием классов
C++ Программирование на С++ с использованием классов. Массивы объектов. Наследование
Массивы объектов. Наследование C++
Множественное наследование с использованием абстрактных базовых классов, файлового ввода-вывода с применением потоков С++, функций обработки исключи C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
25.01.2011, 14:27     Программирование на С++ с использованием классов. Массивы объектов. Наследование #2
Категорически отказываюсь наследовать призму от треугольника.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
25.01.2011, 23:16     Программирование на С++ с использованием классов. Массивы объектов. Наследование #3
silent_1991, а если призма будет только треугольной?
Ardatov
19 / 19 / 3
Регистрация: 13.12.2009
Сообщений: 43
26.01.2011, 00:40     Программирование на С++ с использованием классов. Массивы объектов. Наследование #4
Хорошая задачка. Если не секрет - с какого курса и по какому предмету, можно в личку.
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
#include <iostream>
#include <math.h>
using namespace std;
 
//класс треугольников
class triangle {  
protected:
    float len; //длина строны
public: 
    
    void set_len(float l) { len = l; } //установить длину  
    float perimeter(); //поиск периметра
    float area(); //поиск площади
    void show_perimeter(); //вывод периметра
    void show_area(); //вывод площади
};
 
float triangle::perimeter()
{
     return len * 3;
}
 
void triangle::show_perimeter()
{
     cout << "Perimeter of the triangle is equal to " << triangle::perimeter() 
          << endl;
}     
 
float triangle::area()
{
     //вычисляется по формуле герона 
     float p = len*3/2;
     float a = sqrt(p*(p-len)*(p-len)*(p-len)); 
     return a;
}
 
void triangle::show_area()
{
     cout << "Area of a triangle is equal to " << triangle::area() << endl;
}
 
//класс призм
class prism : public triangle {
    float h; //высота
public:
    void set_h(float hh) { h = hh; } //установит значение высоты
    float volume(); //вычисление объема
    float area(); //вычисление площади
    void show_volume(); //вывод объема
    void show_area(); //вывод площади
};    
 
float prism::volume()
{                
     return triangle::area() * h;
}
 
float prism::area()
{
      return triangle::area()*2 + (h*len)*3;
}
 
void prism::show_volume()
{
     cout << "The volume of the prism is " << prism::volume() << endl;
}
 
void prism::show_area()
{
     cout << "Area of a prism is equal to " << prism::area() << endl;
}
 
int main()
{
    int N;
    cout << "Enter the count of triangles N: ";
    cin >> N;
    
    int M;
    cout << "Enter the number of prisms M: ";
    cin >> M;
    
    int i;
    triangle ar_tr[N]; //массив объектов треугольников
    //ввод значения стороны треугольника
    float temp;
    for(i=0; i<N; i++) {
             cout << "Enter the length of the triangle: "; 
             cin >> temp;            
             ar_tr[i].set_len(temp);
    }
    //вывод данных (площадь и периметр) о треугольниках
    for(i=0; i<N; i++) {
        ar_tr[i].show_area();
        ar_tr[i].show_perimeter(); 
    }        
                                          
    prism ar_pr[M]; //массив объектов призм  
    //ввод грани и высоты призмы 
    for(i=0; i<N; i++) {
             cout << "Enter the face and height of the prisms: ";   
             cin >> temp;          
             ar_pr[i].set_len(temp);
             cin >> temp;
             ar_pr[i].set_h(temp);
    }
    //вывод данных (площадь и объем) о призмах
    for(i=0; i<M; i++) {
        ar_pr[i].show_area();
        ar_pr[i].show_volume();
    }  
       
    //поиск среднего значения площади треугольников    
    float sum=0;
    for(i=0; i<N; i++) sum += ar_tr[i].area();    
    float average = sum/N; //среднее значение      
    //вывод количества треугольников площадь которых меньше средней
    int count=0;
    for(i=0; i<N; i++) 
        if (ar_tr[i].area() < average) count++;
    cout << "\nThe count of triangles, whose area is less than the average: "
         << count;
    
    //поиск призмы с наибольшим объемом
    float max = ar_pr[0].volume();
    for(i=1; i<M; i++) if (max < ar_pr[i].volume()) max = ar_pr[i].volume();
    cout << "Value of the maximum volume of prisms: " << max;
    
    cin.get();
    return 0;
}
Antot N...
0 / 0 / 0
Регистрация: 25.01.2011
Сообщений: 14
26.01.2011, 03:27  [ТС]     Программирование на С++ с использованием классов. Массивы объектов. Наследование #5
Я учусь на 3ем курсе ДВГУ, прикладная инф (в экономике)....вот такие вот нам задачи дают решать.

Добавлено через 29 минут
что-то эта прога ничего не выводит...и результат очень непонятен......
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
26.01.2011, 09:22     Программирование на С++ с использованием классов. Массивы объектов. Наследование #6
M128K145, и даже в этом случае! Призма не есть частный случай треугольника, призма есть частный случай трёхмерной фигуры, а треугольник - частный случай двухмерной фигуры, а они, в свою очередь, частные случаи абстрактного понятия "фигура". О как!
Antot N...
0 / 0 / 0
Регистрация: 25.01.2011
Сообщений: 14
26.01.2011, 11:09  [ТС]     Программирование на С++ с использованием классов. Массивы объектов. Наследование #7
.......но сделайте так чтобы было всё п русски написано в консоле.....
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
26.01.2011, 13:02     Программирование на С++ с использованием классов. Массивы объектов. Наследование #8
silent_1991, ага, и не первый раз уже. В прошлый раз предлагали наследовать цилиндр от окружности.

Кстати, использовать формулу Герона для вычисления площади равностороннего треугольника — бессмысленно. Всё гораздо проще.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
26.01.2011, 13:05     Программирование на С++ с использованием классов. Массивы объектов. Наследование #9
volovzi, тогда у меня настроение было получше, и я всё-таки унаследовал, хотя упомянул про правильную иерархию в точности то же самое, что и здесь)))
На счёт Герона - естественно, для равностороннего треугольника лучше "родную" формулу использовать)))
Antot N...
0 / 0 / 0
Регистрация: 25.01.2011
Сообщений: 14
26.01.2011, 13:24  [ТС]     Программирование на С++ с использованием классов. Массивы объектов. Наследование #10
это конечно всё очень весело, но, господа, быть может вы ответите на мой вопрос???
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
26.01.2011, 13:38     Программирование на С++ с использованием классов. Массивы объектов. Наследование #11
Antot N..., а ты сам что-нибудь собираешься делать?
Ardatov
19 / 19 / 3
Регистрация: 13.12.2009
Сообщений: 43
26.01.2011, 14:34     Программирование на С++ с использованием классов. Массивы объектов. Наследование #12
Antot N..., что именно вам не понятно?
Миниатюры
Программирование на С++ с использованием классов. Массивы объектов. Наследование  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2011, 14:39     Программирование на С++ с использованием классов. Массивы объектов. Наследование
Еще ссылки по теме:

C++ Программирование с использованием классов
C++ Программирование задачи на двумерные и одномерные массивы с использованием шаблонов 2
Наследование static атрибута(хранение количества объектов наследуемых классов) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Antot N...
0 / 0 / 0
Регистрация: 25.01.2011
Сообщений: 14
26.01.2011, 14:39  [ТС]     Программирование на С++ с использованием классов. Массивы объектов. Наследование #13
не совсем понял твой вопрос....просто, друзья, я вообще мало что понимаю в этом с++....просто прошу вашей помощи разобраться с этим всем....у меня экзамен через 2 дня, а у меня нет ничего, чего бы я мог показать преподу....так что вот проу вашей помощи...

Добавлено через 1 минуту
Ardatov, спасибо за пояснение))
Yandex
Объявления
26.01.2011, 14:39     Программирование на С++ с использованием классов. Массивы объектов. Наследование
Ответ Создать тему
Опции темы

Текущее время: 18:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru