Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 13.10.2020
Сообщений: 26
1

Класс Triangle для представления треугольника

21.09.2021, 01:08. Показов 1696. Ответов 0

Author24 — интернет-сервис помощи студентам
Нагородил кода, а проверку на существование треугольника сделать не удалось, по трем сторонам и углам - понятно, но как совместить это, или уже не туда меня понесло. В общем ниже текст задания, не прошу всё сделать (но был бы благодарен), а хотя бы помочь сдвинуться с мертвой точки (проверка треуг. на существование). С бОльшей частью треугольников работает корректно, но путают прогу равные углы, как я заметил

Создать класс Triangle для представления треугольника. Поля данных должны включать углы и стороны. Требуется реализовать операции: получения и изменения полей данных, вычисление площади, вычисление периметра, вычисление высот, а также определение вида треугольника (равносторон., равнобедрю, прямоуг.)

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
#include <iostream>
#include <Windows.h>
using namespace std;
class Triangle
{
private:
    float angle_ab, angle_bc, angle_ca, side_A, side_B, side_C;
public:
    void set_data()
    {
        cout << "Введите стороны треугольника\n";
        cin >> side_A >> side_B >> side_C;
        if (cin.fail())
        {
            cerr << "Некоректный ввод\n";
            exit(0);
        }
        if ((side_A > side_B + side_C) || (side_B > side_A + side_C) || (side_C > side_A + side_B))//проверка по 3 сторонам
        {
            cout << "Треугольник не существует из-за сторон\n";
            set_data();
        }
        cout << "Введите углы треугольника\n";
        cin >> angle_ab >> angle_bc >> angle_ca;
        if (cin.fail())
        {
            cerr << "Некоректный ввод\n";
            exit(0);
        }
        if ((angle_ab + angle_bc + angle_ca) != 180)//проверка по 3 углам
        {
            cout << "Сумма углов не равна 180!\n";
            set_data();
        }
        if (!ex())
        {
            cout << "Такого треугольника не существует\n";
            set_data();
        }
    }
    bool ex()//ф-ция проверки правила: наибольший угол лежит напротив наибольшей стороны
    {
        bool exist = false;
        float max_side, max_angle;
        
        max_side = (side_A > side_B) ? side_A : side_B;
        if (side_C > max_side)
            max_side = side_C;
        max_angle = (angle_ab > angle_bc) ? angle_ab : angle_bc;
        if (angle_ca > max_angle)
            max_angle = angle_ca;
 
        if ((max_side == side_A && max_angle==angle_bc)|| (max_side == side_B && max_angle == angle_ca)|| (max_side == side_C && max_angle == angle_ab))//наибольшая сторона напротив наибольшего угла
        {
            exist = true;
        }
        return exist;
    }
    void choise()
    {
        int ch;
        cout << "1-данные треугольника; 2-изменить данные; 3-вычисление P, S, h; 4-вид треугольника; 5-закрыть программу\n";
        cin >> ch;
        switch (ch)
        {
        case 1:
            cout << "Стороны треугольника: A-" << side_A << " B-" << side_B << " C-" << side_C << endl;
            cout << "Углы треугольника: ab-" << angle_ab << " bc-" << angle_bc << " ca-" << angle_ca << endl;
            choise();
            break;
        case 2:
            set_data();
            choise();
            break;
        case 3://код не дописан, т.к не выполнена часть с проверкой треуг
            choise();
            break;
        case 4://тут та же история
            choise();
            break;
        case 5:
            cout << "Закрытие...\n";
            break;
        default:
            cout << "Выбери предложенное число!" << endl;
            break;
        }
    }
};
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    Triangle T;
    T.set_data();
    T.choise();
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2021, 01:08
Ответы с готовыми решениями:

Создать класс Triangle для представления треугольника. Поля данных должны включать углы и стороны.
Создать класс Triangle для представления треугольника. Поля данных должны включать углы и стороны....

Реализовать класс Triangle (задание 25), опираясь на класс Angle из задания 26 для представления углов
Реализовать класс Triangle (задание 25), опираясь на класс Angle из задания 26 для представления...

Реализовать класс ModelWindow, добавив поле для курсора, используя для представления поля класс Cursor
Реализовать класс ModelWindow, добавив поле для курсора. Используйте для представления поля класс...

Реализовать класс Goods используя для представления цены класс Money
Реализовать класс Goods (пункт 1 ), используя для представления цены класс Money с пункта 2...

0
21.09.2021, 01:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2021, 01:08
Помогаю со студенческими работами здесь

Создать базовый класс Polygon и производный класс Triangle
Создать базовый класс Polygon (многоугольник). Класс должен содержать методы для рисования...

Разработайте и реализуйте абстрактный тип данных для представления треугольника
Разработайте и реализуйте абстрактный тип данных для представления треугольника. Данные этого типа...

Реализовать класс Triangle опираясь на класс Angle
Здравствуйте. У меня возникли проблемы. Как правильно реализовать класс Triangle опираясь на класс...

Сделать класс для представления реки страны
Сделать класс для представления реки страны(Название реки,длина , страна через которою она...

Разработать класс для представления сведений о студенте
Разработать класс для представления сведений о студентах: фамилия, группа, массив из четырёх...

Разработать класс для представления времени суток
Возникло задание с которым я совсем не могу разобраться, буду бесконечно признателен за помощь...

Создать класс для представления простой дроби
Создать класс для представления простой дроби. Реализовать конструкторы, функцию сокращения дроби,...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru