Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.84
Ксения Стэп
1 / 1 / 0
Регистрация: 11.12.2010
Сообщений: 24
#1

Разработать класс треугольник - C++

11.12.2010, 14:40. Просмотров 4019. Ответов 1
Метки нет (Все метки)

ПОМОГИТЕ РЕШИТЬ - Создать класс треугольник, члены класса - длины 3-х сторон.
Предусмотреть в классе методы проверки существования треугольника,
вычисления и вывода сведений о фигуре – длины сторон, углы, периметр,
площадь. Создать производный класс – прямоугольный треугольник,
30
предусмотреть в классе проверку, является ли треугольник прямоугольным.
Написать программу, демонстрирующую работу с классом: дано M
треугольников и N прямоугольных треугольников, найти среднюю площадь
М треугольников и прямоугольный треугольник с наибольшей гипотенузой.

Добавлено через 2 часа 5 минут
ТАМ ОПЕЧАТКА НЕБОЛЬШАЯ,30 НЕ ОТНОСИТЬСЯ К ЗАДАЧЕ ..
Создать класс треугольник, члены класса - длины 3-х сторон.
Предусмотреть в классе методы проверки существования треугольника,
вычисления и вывода сведений о фигуре – длины сторон, углы, периметр,
площадь. Создать производный класс – прямоугольный треугольник,
предусмотреть в классе проверку, является ли треугольник прямоугольным.
Написать программу, демонстрирующую работу с классом: дано M
треугольников и N прямоугольных треугольников, найти среднюю площадь
М треугольников и прямоугольный треугольник с наибольшей гипотенузой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2010, 14:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разработать класс треугольник (C++):

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

Создать базовый класс Треугольник с 2 наследниками: Равносторонний треугольник, Прямоугольный треугольник - C++
Задание звучит так: Нужно создать базовый класс Треугольник с двумя наследующими его классами - равносторонний треугольник (·...

Класс треугольник с произвольным классом - равнобедренный треугольник - C++
Создать класс треугольник, члены класса - длины 3-х сторон. Предусмотреть в классе методы проверки существования треугольника, вычисления и...

Разработать класс Tableware (посуда) и производный класс Dish (тарелка). Описать атрибуты - C++
Разработать класс Tableware (посуда) и производный класс Dish (тарелка). Описать атрибуты.

Разработать класс Man (человек) и производный класс Student (студент). Описать атрибуты. - C++
Разработать класс Man (человек) и производный класс Student (студент). Описать атрибуты.

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

1
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
11.12.2010, 19:40 #2
Слегка через одно место, для достоверности. Удачно сдать.
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
#include <iostream>
#include <vector>
#include <cmath>
#include <stdexcept>
#include <cstdlib>
#include <ctime>
 
class Triangle
{
protected:
        double _a, _b, _c;
        const static double pi = 3.14159265;
public:
        Triangle() : _a(0), _b(0), _c(0) {}
        Triangle(double a, double b, double c) : _a(a), _b(b), _c(c) {}
        Triangle(const Triangle& other) : _a(other._a), _b(other._b), _c(other._c) {}
        // стороны
        const double a() const { return _a; }
        const double b() const { return _b; }
        const double c() const { return _c; }
 
        const double perimeter() const { return _a+_b+_c; }
        const double area() const
        {
                return (_b*_c*sin(A()))/2.0;
        }
        const bool is_possible() const { return ((_a+_b)>_c) || ((_b+_c)>_a) || ((_a+_c)>_b); }
        const bool is_right() const
        {
                return (((Ad()-90)<0.0001) || ((Bd()-90)<0.0001) || ((Cd()-90)<0.0001));
        }
 
        // углы, противолежащие соответствующим сторонам
        const double A() const
        {
                double p = (_b*_b + _c*_c - _a*_a) / (2.0*_c*_b);
                return acos(p-static_cast<int>(p));
        }
        const double B() const
        {
                double p = (-_b*_b + _c*_c + _a*_a) / (2.0*_a*_c);
                return acos(p-static_cast<int>(p));
        }
        const double C() const
        {
                double p = (_b*_b - _c*_c + _a*_a) / (2.0*_a*_b);
                return acos(p-static_cast<int>(p));
        }
 
        const double Ad() const { return A()/(pi/180.); }
        const double Bd() const { return B()/(pi/180.); }
        const double Cd() const { return C()/(pi/180.); }
 
        friend std::ostream& operator<< (std::ostream& o, const Triangle& T)
        {
                o << "a: " << T.a() << ", b: " << T.b() << ", c: " << T.c() << ". ";
                if (T.is_possible())
                        o << "Area: " << T.area();
                else
                        o << "Impossible triangle.";
                return o;
        }
};
 
class RightTriangle : public Triangle
{
public:
        const double hypotenuse() const { return _c; }
        RightTriangle(void) : Triangle(0, 0, 0) {}
        RightTriangle(double a, double b) : Triangle(a, b, pow(a*a+b*b, .5)){}
        RightTriangle& operator= (const Triangle& other)
        {
                if (this!=&other)
                {
                        if (other.is_right())
                        {
                                if (other.A()-90 < 0.0001)
                                {
                                        _a = other.c();
                                        _b = other.b();
                                        _c = other.a();
                                } else
                                if (other.B()-90 < 0.0001)
                                {
                                        _a = other.a();
                                        _b = other.c();
                                        _c = other.b();
                                } else
                                if (other.C()-90 < 0.0001)
                                {
                                        _a = other.a();
                                        _b = other.b();
                                        _c = other.c();
                                }
                        }
                        else
                                throw (std::runtime_error("Not a right triangle."));
                }
                return *this;
        }
 
        operator Triangle() const { return Triangle(_a, _b, _c); }
};
 
int main()
{
        srand(static_cast<unsigned int>(time(0)));
        int M = 10;
        int N = 10;
        std::vector<Triangle> T(M);
        std::vector<RightTriangle> R(N);
 
        std::cout << "Triangles: " << std::endl;
        double sum_of_areas = 0.;
        for (int i=0; i<T.size(); i++)
        {
                T[i] = Triangle((rand()%1000+500)/10., (rand()%1000+500)/10., (rand()%500+1)/10.);
                std::cout << T[i] << std::endl;
                sum_of_areas += T[i].area();
        }
        std::cout << "Average sum of areas: " << sum_of_areas/M << std::endl;
 
        int index = 0;
        std::cout << std::endl << "Right triangles: " << std::endl;
        for (int i=0; i<R.size(); i++)
        {
                R[i] = RightTriangle((rand()%1000+500)/10., (rand()%1000+500)/10.);
                std::cout << R[i] << std::endl;
                if (R[i].hypotenuse() > R[index].hypotenuse())
                        index = i;
        }
        std::cout << "Maximum hypotenuse has triangle number " << index << ": " << R[index].hypotenuse() << std::endl;
 
        return 0;
}
4
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2010, 19:40
Привет! Вот еще темы с ответами:

класс треугольник - C++
добрый вечер) мне нужно было создать класс треугольник и реализовать операции нахождения площади, периметра, я сделала это на примере...

класс «Треугольник» - C++
Задание 1. Создайте класс «Треугольник», данными которого является длины отрезков, составляющих стороны треугольника. Класс имеет...

Класс треугольник - C++
Вечер добрый! Помогите пожалуйста реализовать задачу. Класс треугольник. Проверка введённых данных. Нахождение периметра и площади....

Класс Треугольник на С++ - C++
Помогите пожалуйста написать три конструктора для класса &quot;треугольник&quot; : 1)класс задаётся либо длинами 3х сторон, 2)либо стороной и двумя...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru