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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ С++. OpenMp. Flops. Увеличить скорость перемножение матриц http://www.cyberforum.ru/cpp-beginners/thread812673.html
Здравствуйте. В универе стоит задача - написать программу для перемножения матриц с максимальной производительностью (flops) для дальнейшего использования с OpenMP. Использую стандартный алгоритм с некоторыми модификациями. void Test2(int n, int threads) { double* result = new double; double* A = new double; double* B = new double; for (int i = 0; i < n; i++) for (int j = 0; j < n;...
C++ Исключения в потоках Кто читал книгу Параллельное программирование на С++ в действии; у меня возник вопрос из 8 главы. Какая роль в нижеприведенном коде класса join_threads, зачем потоки присоединять в деструкторе при исключении? Программа же все равно будет прервана при первом срабатывании исключения, а те потоки, которые еще работают сами по себе и завершатся при уничтожении вектора потоков threads с... http://www.cyberforum.ru/cpp-beginners/thread812670.html
Последовательность выполнения операций C++
Qt 4.6 кросс-компиляция под Qtopia 4.5. g++. В целом, можно считать чистым с++. book ok; ok = ... true/false; ok = ok && Foo(); Если в ходе выполнения программы ok = false, то функция Foo() может не вызываться (нерегламентированное поведение). В частности: один раз скомпилировал - не запускается; пересобрал - запустилась. Вопрос заключается в следующем: 1) Как выйти из ситуации так,...
C++ fopen, _write, _read с динамическим именем файла
Много перерыл, не нашел. Нужно открывать файл с динамическим названием strcpy_s(cc, "name.par"); FILE *fp=fopen(cc,"r"); Так работает, но если я получаю название файла, предположим через String^ nameT; DateTime^ date; date=DateTime::Now;...
C++ Как переделать программу из Borland C в С++? http://www.cyberforum.ru/cpp-beginners/thread812650.html
Доброго времени суток! Помогите, пожалуйста, переделать программу из Borland C 3.1 в С++. Задача такова: "Написать программу, вычисляющую разность суммы квадратов первой и четвертой цифры и суммы квадратов второй и третьей цифры заданного четырехзначного числа." Код для Borland C 3.1: void main() { int n,y;
C++ Задачи по теме: Обработка символьной и строковой информации Помогите пожалуйста решить задачи 1. Подсчитать сколько раз в заданном тексте встречается заданный символ. подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
19.03.2013, 16:11     Описать класс "Треугольник"
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;
}
 
Текущее время: 19:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru