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

Создать класс Triangle, содержащий следующие члены класса

30.01.2015, 04:41. Показов 8026. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите подправить код..Плиз


Задание
Создать класс Triangle, содержащий следующие члены класса:
1. Поля:
• int a, b, c;
2. Конструктор, позволяющий создать экземпляр класса с заданными длинами сторон.
3. Методы, позволяющие:
• вывести длины сторон треугольника на экран;
• расчитать периметр треугольника;
• расчитать площадь треугольника.
4. Свойства, позволяющие:
• получить и установить длины сторон треугольника (доступные для чтения и записи);
• установить, существует ли треугольник с данными длинами сторон (доступное только для чтения).
5. Индексатор, позволяющий по индексу 0 обращаться к полю a, по индексу 1 – к полю b, по индексу 2 – к полю c; при других значениях индекса должно выдаваться сообщение об ошибке.
6. Перегруженные операции и константы, позволяющие:
• одновременно увеличить (уменьшить) значения полей a, b и c на 1 (операции ++ и --);
• узнать, существует треугольник с заданными сторонами, или нет (константы true и
false);
• одновременно умножить поля a, b и c на скаляр (операция *)



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
#include <cmath>
#include <string>
#include <iostream>
 
using namespace std;
 
class Triangle {
private:
double a,b,c;
 
public:
    int number;
    //конструктор для неопределенного треугольника
Triangle (): a(3),b(4),c(5)
{number++;}
  //конструктор для определенного треугольника
Triangle (double a, double b, double c): a(a),b(b),c(c)
{number++;}
  //сколько экземпляров класса
static int  Numbers (){int number;return number;}
//информация о треугольнике
void Info(double a, double b, double c)
{
   /* cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    cout << "c = " << c << endl;*/
    Check();
    cout << "Периметр = " << Perimetr() << endl;
    cout << "Площадь = " << Square() << endl;
   if( a == b && b == c )
   {
      cout << "Равносторонний\n"<<endl;
   }
   else if( a == b || a == c || b == c )
   {
      cout << "Равнобедренный\n"<<endl;
   }
   else
   {
      cout << "Разносторонний\n"<<endl;
   }
}
//Периметр считаем
double Perimetr()
{
    return (a+b+c);
}
//Площадь считаем
double Square()
{
    double P=Perimetr()/2;
    return (sqrt((P-a)*(P-b)*(P-c)));
}
//Проверка существования треугольника
void Check()
{
    if (((a+b)>c)&&((a+c)>b)&&((b+c)>a))
    cout<<"Треугольник существует"<<endl;
    else
    cout<<"Треугольник не существует"<<endl;
}
//Устанавливаем длины сторон
void Install(double a1, double b1, double c1) {
        cout<<"Введите новую сторону а"<<endl;
         cin>>a1;
        cout<<"Введите новую сторону b"<<endl;
        cin>>b1;
         cout<<"Введите новую сторону c"<<endl;
        cin>>c1;
        a = a1;
        b = b1;
        c = c1;
    }
Triangle operator++()
{
    a++;
    b++;
    c++;
    return Triangle(a,b,c);
}
Triangle operator--()
{
    return Triangle(--a, --b, --c);
}
void Increase(double a, double b, double c, double C)
{
    cout<<"Умножаем стороны треугольника на константу!\n"<<endl;
    a=a*C;
    b=b*C;
    c=c*C;
    cout<<"Новая сторона а: "<<a<<endl;
 
        cout<<"новая сторона б: "<<b<<endl;
 
         cout<<"новая сторона с: "<<c<<endl;
 
}
};
 
 
 
 
 
  int main()
  {setlocale(LC_ALL,"Russian");
      double a,b,c,C;
  cout<<"Введите сторону а"<<endl;
         cin>>a;
        cout<<"Введите сторону b"<<endl;
        cin>>b;
         cout<<"Введите сторону c"<<endl;
        cin>>c;
        cout<<"Введите константу для умножения"<<endl;
        cin>>C;
 
Triangle g;
g.Info(a,b,c);
g.Increase(a,b,c,C);
++g;
g.Info(a,b,c);
--g;
g.Info(a,b,c);
Triangle TriangleB;
TriangleB.Install(a,b,c);
TriangleB.Info(a,b,c);
 
cout<<"Обработано треугольников "<<Triangle::Numbers()<<endl;
        return 0;
  }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.01.2015, 04:41
Ответы с готовыми решениями:

Создать класс Triangle, содержащий следующие члены класса
Все почти работает, но не получается вывести кол-во экземпляров класса, подскажите как? Задание: 1. Поля int a , b , c; 2. Функции ,...

создать класс triangle , содержащий следующие члены класса
1. Поля int a , b , c; 2. Функции , позволяющие : - вывести на экран информацию о треугольнике ;-рассчитать периметр треугольника; -...

Создать класс Triangle, разработав следующие элементы класса
Создать класс Triangle, разработав следующие элементы класса: a. Поля:  int a, b, c; b. Конструктор, позволяющий создать экземпляр...

2
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
30.01.2015, 06:31
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
#include <iostream>
 
struct Triangle
{
    //1.    Поля:
    int a, b, c;
    
    Triangle() : a(0), b(0), c(0) {}
 
    //2.    Конструктор, позволяющий создать экземпляр класса с заданными длинами сторон.
    Triangle(int a, int b, int c) : a(a), b(b), c(c) {}
    
    //вывести длины сторон треугольника на экран;
    void show() const
    {
        std::cout << "a = " << a
                  << "b = " << b
                  << "c = " << c << std::endl;
    }
    
    //расчитать периметр треугольника;
    int perimeter() const
    {
        return a + b + c;
    }
    
    //расчитать площадь треугольника.
    int area() const
    {
        int p = perimeter() / 2;
        return sqrt(p * (p - a) * (p - b) * (p - c));
    }
 
    //установить, существует ли треугольник с данными длинами сторон (доступное только для чтения).
    bool exists() const
    {
        return ((a + b) > c) && ((a + c) > b) && ((b + c) > a);
    }
 
    //Индексатор, позволяющий по индексу 0 обращаться к полю a, по индексу 1 – к полю b, по индексу 2 – к полю c; 
    //при других значениях индекса должно выдаваться сообщение об ошибке.
    const int& at(int index) const
    {
        switch (index)
        {
        case 0: return a;
        case 1: return b;
        case 2: return c;
        default: throw(1);
        }
    }
    
    //одновременно увеличить (уменьшить) значения полей a, b и c на 1 (операции ++ и --);
    const Triangle& operator++()
    {
        return a++, b++, c++, *this;
    }
    
    //одновременно увеличить (уменьшить) значения полей a, b и c на 1 (операции ++ и --);
    const Triangle& operator--()
    {
        return a--, b--, c--, *this;
    }
    
    //одновременно умножить поля a, b и c на скаляр (операция *)
    Triangle operator*(int n) const
    {
        return Triangle(a * n, b * n, c * n);
    }
};
1. дефолтные значения имхо должны быть нулями всегда
2. или уж значения сторон типа int как в задании или double...
3. че такое Info не понял, в задании вроде не сказано проверять равнобедренность и пр. только стороны вывести... (хотя и это можно, но зачем делать то что не просят)
4. в нахождении площади недомножил на P один раз
5. хз насчет количества объектов, я сам че то не пойму как это реализовать, там должна быть static переменная внутри класса, но как ее нулем инициализировать не ясно...
0
0 / 0 / 0
Регистрация: 01.02.2019
Сообщений: 3
06.02.2019, 02:55
Вот вам более менее рабочий код
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
#include <iostream>
#include <math.h>
 
using namespace std;
 
class triangle {
    int a, b, c;
public:
    triangle(int a1, int b1, int c1) {
        a = a1;
        b = b1;
        c = c1;
    }
    bool exist();
    int perimetr();
    double square();
    void print();
    triangle operator++();
    triangle operator--();
};
 
bool triangle::exist() {
    return a < b + c && b < a + c && c < b + a;
}
 
int triangle::perimetr() {
    return a + b + c;
}
 
double triangle::square() {
    double p = perimetr()/2;
    return sqrt(p*(p-a)*(p-b)*(p-c));
}
void triangle::print() {
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    cout << "c = " << c << endl;
    cout << "Perimetr = " << perimetr() << endl;
    cout << "Ploshad = " << square() << endl;
}
 
triangle triangle::operator++() {
    ++a;
    ++b;
    ++c;
    return *this;
}
 
triangle triangle::operator--() {
    --a;
    --b;
    --c;
    return *this;
}
 
int main()
{
    int a = 0;
    int b = 0;
    int c = 0;
    cin >> a;
    cin >> b;
    cin >> c;
 
    triangle trianglep(a,b,c);
    ++trianglep;
    trianglep.print();
    system("pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.02.2019, 02:55
Помогаю со студенческими работами здесь

Создать класс Employee, содержащий следующие элементы:
Создать класс Employee, содержащий следующие элементы: - поле «ФИО» char* FIO; - поле «Табельный номер» int Number; - поле...

Создать класс Money, содержащий следующие элементы
Создать класс Money, содержащий следующие элементы: - поле «валюта» char* Currency; - поле «сумма» long Sum; - метод получения ...

Создать класс Letter, содержащий следующие элементы
Создать класс Letter, содержащий следующие элементы: - поле «отправитель» Person* Sender; - поле «получатель» Person* Receiver; -...

класс «Строка» (данные-члены класса – строчка, функции-члены класса – операции)
Помогите пожалйуста с реализацией программы... Реализовать класс «Строка» (данные-члены класса – строчка (указатель на массив, ...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru