0 / 0 / 0
Регистрация: 21.12.2018
Сообщений: 3
1

Класс "Равносторонний треугольник" и производный класс "Правильная треугольная призма"

21.12.2018, 10:11. Показов 4941. Ответов 1
Метки нет (Все метки)

Создать класс равносторонний треугольник, член класса – длина стороны.

Предусмотреть в классе методы вычисления и вывода сведений о фигуре – периметр, площадь.

Создать производный класс – правильная треугольная призма с высотой H, добавить в класс метод определения объема фигуры, перегрузить методы расчета площади и вывода сведений о фигуре.

Написать программу, демонстрирующую работу с классом: дано N треугольников и M призм.

Найти количество треугольников, у которых площадь меньше средней площади треугольников, и призму с наибольшим объемом

error C2057: требуется константное выражение
error C2466: невозможно выделить память для массива постоянного нулевого размера
error C2133: ar_tr: неизвестный размер
error C2057: требуется константное выражение
error C2466: невозможно выделить память для массива постоянного нулевого размера
error C2133: ar_pr: неизвестный размер
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
#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;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2018, 10:11
Ответы с готовыми решениями:

Создать класс "Квадрат" и производный класс "Правильная пирамида"
Заранее спасибо за помощь)

Создать абстрактный класс "Треугольник" и производный - "Равнобедренный треугольник"
Задание Создать абстрактный класс треугольник. Предусмотреть в классе методы проверки...

Создать класс "Шар", заданный радиусом, и определить производный класс "Окружность"
Создать класс шар, заданный радиусом. Определить производный класс окружности. Предусмотреть...

Базовый класс "многоугольник" и производные классы "треугольник" и "прямоугольник"
Не могу понять как реализовать данное задание. Создать 1 базовый класс и несколько...

1
Модератор
Эксперт С++
11992 / 9700 / 5873
Регистрация: 18.12.2011
Сообщений: 26,004
21.12.2018, 10:54 2
Лучший ответ Сообщение было отмечено P0liceman как решение

Решение

Цитата Сообщение от P0liceman Посмотреть сообщение
triangle ar_tr[N]; //массив объектов треугольников
C++
1
triangle* ar_tr=new triangle[N];
Аналогично для призмы
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2018, 10:54
Помогаю со студенческими работами здесь

Создать класс "точка" и производный класс "отрезок"
Создать класс &quot;точка&quot; и производный класс &quot;отрезок&quot; ИСПОЛЬЗОВАТЬ КОНСТРУКТОРЫ И ДИСТРУКТОРЫ и к...

Базовый класс "Точка" и производный класс "Вектор"
Здравствуйте, помогите пожалуйста решить вот такую задачу, никогда с такими не сталкивался ((...

Базовый класс "Человек" и производный класс "Сигнальщик"
Помогите создать программу, 3 дня голово ламаю над ней. Описать родительский класс и...

Для класса "Футболист" создать производный класс "Нападающий"
помогите плиз написать главную функцию и внешний метод и посмотрите ошибки класс ФУТБОЛИСТ с...

Класс "Равносторонний треугольник"
Создать класс равносторонний треугольник, член класса – длина стороны. Предусмотреть в классе...

Определить базовый класс "Матрица" и класс-потомок "Треугольная матрица"
Нужно определить класс &quot;матрица&quot; с возможностью динамического выделения и освобождения памяти,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru