Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 11.10.2016
Сообщений: 7
1

Создать класс треугольник, члены класса – длины 3-х сторон

12.05.2017, 18:34. Показов 4014. Ответов 1
Метки нет (Все метки)

Создать класс треугольник, члены класса – длины 3-х сторон.
Предусмотреть в классе методы проверки существования треугольника,
вычисления и вывода сведений о фигуре – длины сторон, углы, периметр,
площадь. Создать производный класс – равнобедренный треугольник,
предусмотреть в классе проверку, является ли треугольник
равнобедренным. Написать программу, демонстрирующую работу с
классом: дано N треугольников и M равнобедренных треугольников, найти
минимальную площадь для N треугольников и равнобедренный
треугольник с наибольшим углом при основании.

Проблемки с заданием
Помогите, кто чем сможет, пожалуйста(
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2017, 18:34
Ответы с готовыми решениями:

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

создать класс треугольник, члены класса - длины 3-х сторон
Прошу помочь составить программу на С++ по задаче: создать класс треугольник, члены класса - длины...

Создать класс треугольник, члены класса - длины трех сторон
Создать класс треугольник, члены класса - длины 3-х сторон. Описать в классе конструкторы,...

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

1
278 / 250 / 209
Регистрация: 14.11.2016
Сообщений: 948
12.05.2017, 21:54 2
Лучший ответ Сообщение было отмечено Денис Булычев как решение

Решение

Для поиска углов, зная 3 стороны треугольника, попроси кто-нибудь поможет функцию void find_angle(void) {...} дописать.
Цитата Сообщение от Денис Булычев Посмотреть сообщение
дано N треугольников и M равнобедренных треугольников, найти
минимальную площадь для N треугольников и равнобедренный
треугольник с наибольшим углом при основании.
И вот это наверное через STL veсtor или array нужно делать. Проси кого-нибудь. Класс считай тебе набросал.
P.s. бесплатный сыр только в мышеловке.
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
#include <iostream>
#include <cstdlib>
#include <clocale>
#include <cmath>
//************************************************************
// Параметры по-умолчанию
#define         __a                 1
#define         __b                 __a
#define         __c                 __a
#define         __a_iso             2
#define         __b_iso             __a_iso
#define         __c_iso             __a_iso/2
 
#define         __alpha             60
#define         __betta             __alpha
#define         __gamma             __alpha
#define         __alpha_iso         75.5
#define         __betta_iso         __alpha_iso
#define         __gamma_iso         180-(__alpha_iso*2)
//************************************************************
using namespace std;
//************************************************************
class Triangle {
protected:
    double a, b, c; // a/b - левая/правая стороны; c - основание
    double alpha, betta, gamma; // alpha/betta - левый/правый углы по основанию; gamma - верхний угол
    void find_angle(void) {
        /* РЕАЛИЗОВАТЬ
        ПОИСК УГЛОВ */
    }
    virtual void check(void) { // Проверка "Является ли треугольником?"
        if (!((this->a < this->b + this->c) && (this->b < this->a + this->c) && (this->c < this->a + this->b))) {
            this->a = __a; this->b = __b; this->c = __c;
            this->alpha = __alpha; this->betta = __betta; this->gamma = __gamma;
        }
    }
public:
    Triangle(void) : a(__a), b(__b), c(__c), alpha(__alpha), betta(__betta), gamma(__gamma) {};
    Triangle(double _a, double _b, double _c) : a(_a), b(_b), c(_c) { check(); find_angle(); };
    friend ostream& operator << (ostream &os, Triangle &obj) {
        os << "Side A: " << obj.a << endl
            << "Side B: " << obj.b << endl
            << "Side C: " << obj.c << endl
            << "Alpha: " << obj.alpha << endl
            << "Betta: " << obj.betta << endl
            << "Gamma: " << obj.gamma << endl
            << "Area (S): " << obj.Area() << endl
            << "Perimeter (P): " << obj.Perimeter() << endl;
        return os;
    }
    double Area(void) { // Площадь
        double p = (this->a + this->b + this->c) / 2;
        return sqrt(p*(p - a)*(p - b)*(p - c));
    }
    double Perimeter(void) { return this->a + this->b + this->c; } // Периметр
    double GetMaxAngle(void) { return this->alpha > this->betta ? this->alpha : this->betta; } // Получения большего угла при основании
    ~Triangle(void) {};
};
//************************************************************
class T_isosceles : public Triangle { // Равнобедренный треугольник
private:
    void check(void) { // Проверка "Является ли равнобедренным треугольником?"
        if ((this->a != this->b && this->b != this->c && this->c != this->a) || (this->a == this->b && this->b == this->c)) {
            this->a = __a_iso; this->b = __b_iso; this->c = __c_iso;
            this->alpha = __alpha_iso; this->betta = __betta_iso; this->gamma = __gamma_iso;
        }
    }
public:
    T_isosceles(void) {
        this->a = __a_iso; this->b = __b_iso; this->c = __c_iso;
        this->alpha = __alpha_iso; this->betta = __betta_iso; this->gamma = __gamma_iso;
    };
    T_isosceles(double _a, double _b, double _c) : Triangle(_a, _b, _c) { check(); find_angle(); };
    friend ostream& operator << (ostream &os, T_isosceles &obj) {
        os << "Side A: " << obj.a << endl
            << "Side B: " << obj.b << endl
            << "Side C: " << obj.c << endl
            << "Alpha: " << obj.alpha << endl
            << "Betta: " << obj.betta << endl
            << "Gamma: " << obj.gamma << endl
            << "Area (S): " << obj.Area() << endl
            << "Perimeter (P): " << obj.Perimeter() << endl;
        return os;
    }
};
//************************************************************
int main(void)
{
    setlocale(LC_ALL, "Russian");
    /// T E S T
    //Triangle One(4,5,6);
    //T_isosceles Two(6, 6, 4);
    //cout << One << endl << Two << endl;
    //cout << "Наибольший угол при основании:" << Two.GetMaxAngle() << endl;
    
    cout << endl; system("pause");
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2017, 21:54

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Создать класс Прямоугольник, члены класса – длины сторон a и b
Создать класс Прямоугольник, члены класса – длины сторон a и b. Предусмотреть в классе методы...

Создать класс прямоугольник, члены класса – длины сторон a и b. Предусмотреть в классе методы вычисления и вывода сведен
Создать класс прямоугольник, члены класса – длины сторон a и b. Предусмотреть в классе методы...

Создать класс треугольник, члены класса - длины 3-х сторон
Создать класс треугольник, члены класса - длины 3-х сторон. Предусмотреть в классе методы проверки...

Класс треугольник, члены класса длины 3-х сторон
Задание: создать класс треугольник, члены класса длины 3-х сторон. Предусмотреть в классе методы...


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

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

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