Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
denstr3
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 31
#1

Описать класс "Треугольник" - C++

19.03.2013, 14:41. Просмотров 1559. Ответов 4
Метки нет (Все метки)

Описать класс "Треугольник", который определяет эту геометрическую фигуру посредством задания длин трех его сторон. Класс должен содержать конструктор с параметрами по умолчанию, а также следующие методы: вывод информации о длинах сторон треугольника; изменение длин сторон; определение углов, высот и площади треугольника. Предусмотреть проверку существования треугольника с заданными сторонами (при задании в конструкторе и при изменении сторон посредством соответствующего метода).
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2013, 14:41     Описать класс "Треугольник"
Посмотрите здесь:

Класс "Треугольник", хранящий вершины и производящий вычисление длин его сторон - C++
Класс, хранящий вершины треугольника (x1, y1; x2, y2 и x3, y3) и производящий вычисление длин его сторон, а также определяющий...

Класс "Треугольник в двумерном пространстве" - C++
Нужно написать такой класс. Буду очень благодарен. Данные класса: длины сторон треугольника Функции класса: сравнение двух...

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

Описать класс "студенческая группа" - C++
Описать класс "студенческая группа". Предусмотреть возможность работы с переменным числом студентов, поиска студента по какому-либо...

Описать класс "выставочные экспонаты" - C++
Помогите, пожалуйста, сделать лабораторную. Вот задание: Описать класс, включающий заданные поля и функции. Разработать программу,...

Описать класс "комната" - C++
Описать класс "комната", содержащий сведения о метраже, высоте потолков и количество окон. Предусмотреть инициализацию с проверкой...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
19.03.2013, 16:11     Описать класс "Треугольник" #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
#include <stdexcept>
#include <iostream>
#include <cmath>
 
const double PI = 3.1415926535897932384626433832795;
 
class Triangle {
 public:
  Triangle() : a(0), b(0), c(0) {}
  Triangle(const double &a, const double &b, const double &c)
    : a(a), b(b), c(c) {
    assertExists(a, b, c);
  }
  const double &getA() const { return a; }
  const double &getB() const { return b; }
  const double &getC() const { return c; }
  void setA(const double &a) {
    assertExists(a, b, c);
    this->a = a;
  }
  void setB(const double &b) {
    assertExists(a, b, c);
    this->b = b;
  }
  void setC(const double &c) {
    assertExists(a, b, c);
    this->c = c;
  }
  double getAngleA() const {
    return acos((pow(b, 2.0) + pow(c, 2.0) - pow(a, 2.0)) /
      (2.0 * c * b)) * 180 / PI;
  }
  double getAngleB() const {
    return acos((pow(a, 2.0) + pow(c, 2.0) - pow(b, 2.0)) /
      (2.0 * a * c)) * 180 / PI;
  }
  double getAngleC() const {
    return acos((pow(a, 2.0) + pow(b, 2.0) - pow(c, 2.0)) /
      (2.0 * a * b)) * 180 / PI;
  }
  double getHeightA() const {
    return (2 * getArea()) / a;
  }
  double getHeightB() const {
    return (2 * getArea()) / b;
  }
  double getHeightC() const {
    return (2 * getArea()) / c;
  }
  double getPerimeter() const {
    return a + b + c;
  }
  double getArea() const {
    double p = getPerimeter() / 2.0;
    return sqrt(p * (p - a) * (p - b) * (p - c));
  }
  bool isPossible() const { return isPossible(a, b, c); }
  static bool isPossible(const double &a, const double &b,
    const double &c) {
    return (a < b + c) && (b < a + c) && (c < a + b);
  }
 private:
  void assertExists(const double &a, const double &b, const double &c) {
    if (!isPossible(a, b, c)) {
      throw std::runtime_error("triangle is not possible");
    }
  }
  double a, b, c;
};
 
std::ostream &operator<<(std::ostream &stream, const Triangle &t) {
  return stream << "Triangle{" <<
    "a=" << t.getA() << ",b=" << t.getB() << ",c=" << t.getC() <<
    ((t.isPossible()) ? ",possible" : ",not_possible") <<
    ",angleA=" << t.getAngleA() << ",angleB=" << t.getAngleB() <<
    ",angleC=" << t.getAngleC() << ",heightA=" << t.getHeightA() <<
    ",heightB=" << t.getHeightB() << ",heightC=" << t.getHeightC() <<
    ",area=" << t.getArea() << "}";
};
 
 
int main(int argc,char **argv) {
  try {
    std::cout << Triangle(2, 2, 7);
  } catch (std::exception &e) {
    std::cout << e.what() << std::endl;
  }
 
  try {
    std::cout << Triangle(2, 2, 2);
  } catch (std::exception &e) {
    std::cout << e.what() << std::endl;
  }
 
  std::cin.get();
  return 0;
}
fjay69
85 / 85 / 1
Регистрация: 26.10.2012
Сообщений: 248
19.03.2013, 16:18     Описать класс "Треугольник" #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
От себя добавлю: чтобы не запоминать число Пи, его можно вычислить:
C++
1
const double PI=asin(1)*2;
denstr3
0 / 0 / 0
Регистрация: 19.03.2013
Сообщений: 31
19.03.2013, 16:59  [ТС]     Описать класс "Треугольник" #4
охохо , спасибо, ещё бы теперь разобраться что к чему
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2013, 20:46     Описать класс "Треугольник"
Еще ссылки по теме:

Описать класс "Строка" - C++
Спецификация программы 1. В соответствии с приведенными вариантами заданий реализовать программу с использованием классов. 2. В...

Описать класс "Матрица" - C++
я как бэ в поиске нашел но мне бы хотелось узнать обязательно ли матрица должна быть динамической и можно написать метод для ввода и вывода...

Описать класс "Библиотека" - C++
Помогите пожалуйста Описать класс «Библиотека», в полях которого хранится следующая информация о книгах: автор, название,...

Описать класс "Прямая" - C++
класс - прямая члены класса - Координаты двух точек (x1,y1) и (x2,y2) методы - Конструктор, метод вывода уравнения прямой операторы...

Описать класс "множество" - C++
Описать класс «множество», позволяющий выполнять основные операции — добавление и удаление элемента, пересечение, объединение и разность...

Описать класс "Конус" - C++
Язык С 1. Опишите класс &quot;Конус&quot; Данные класса: координаты центра основания, радиус основания, высота. Конструкторы класса:...


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

Или воспользуйтесь поиском по форуму:
Fraunsa
0 / 0 / 0
Регистрация: 17.12.2013
Сообщений: 7
18.12.2013, 20:46     Описать класс "Треугольник" #5
У меня то же, что и предыдущая задача, но треугольник задается указанием длины одной из его сторон и прилежащими к ней углами (углы задаются в градусах).
Помогите пожалуйста)

Добавлено через 22 часа 12 минут
пожалуйста
Yandex
Объявления
18.12.2013, 20:46     Описать класс "Треугольник"
Ответ Создать тему
Опции темы

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