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

Класс Треугольник на С++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нарисовать прямоугольник в рамке http://www.cyberforum.ru/cpp-beginners/thread671751.html
Необходимо написать функцию void draw(), которая выводила бы прямоугольник внутри рамки 25 на 25. Я еле-еле додумал как нарисовать прямоугольник без рамки и заполнить его указанным символом(и то коряво...). void Rectangle::drawRectangle() { for(int j = 0; j < length(); j++) { cout << perimeterCharacter << ' '; } cout << endl;
C++ Отрицательные массивы Помогите пожалуйста. В одномерном массиве, состоящим из n элементов Найти сумму отрицательных элементов массива. Заранее благодарен http://www.cyberforum.ru/cpp-beginners/thread671735.html
Непонятная формула C++
Всем привет, помогите сделать задание, необходимо рассчитать х по следующей формуле, не могу понять что делать после того, когда я вычла минимальный элемент из максимального?
C++ Хеширование,вычисление ключа методом вычисления адреса
Всем Привет! не могу реализовать последний пункт. Если кто-то поможет,буду благодарен! Задание : Поиск заданного ключа в исходном отсортированном массиве: необходимо расположить элементы исходного массива в новом массиве, используя метод хеширования, и выполнить в нем поиск заданного ключа методом вычисления адреса. ========================================================================...
C++ Нужно отсортировать массив от *start до *finish http://www.cyberforum.ru/cpp-beginners/thread671692.html
нужно отсортировать массив от *start до *finish template<class elm> void sorting(elm *st,elm *fn) { for(;st!=fn;st++) { for(elm *next=st;next!=fn;next++) { if((*next)<(*st))
C++ Выяснить, образуют ли цифры данного числа возрастающую последовательность Здраствуйте, помогите сделать лабораторную, программирование мне не понадобиться так что не хочу забивать этим голову, зарание спасибо. Вот условие задач. 3) Выяснить, образуют ли цифры данного натурального числа N возрастающую последовательность. подробнее

Показать сообщение отдельно
igorrr37
1646 / 1274 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
15.10.2012, 21:43
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
#include <iostream>
#include <stdexcept>
#include <cmath>
#include <sstream>
 
class Triangle
{
public:
    class Angle
    {
    public:
        explicit Angle(double const value_) : value(0.0)
        {
            if(value_ < pi && value_ > 0)
                value = value_;
            else
            {
                std::stringstream ss;
                ss << value_;
                throw(Angle_error("Angle ctor argument out of(0, pi): " + ss.str()));
            }
 
        }
        operator double() const
        {
            return value;
        }
        static double const pi;
    private:
        class Angle_error : public std::runtime_error
        {
        public:
            Angle_error(std::string const& message) : std::runtime_error(message){}
        };
        double value;
    };
 
    class Side
    {
    public:
        explicit Side(double const value_) : value(1)
        {
            if(value_ > 0)
                value = value_;
            else
            {
                std::stringstream ss;
                ss << value_;
                throw Side_error("Side ctor argument <= 0: " + ss.str());
            }
        }
        operator double() const
        {
            return value;
        }
    private:
        class Side_error : public std::runtime_error
        {
        public:
            Side_error(std::string const& message) : std::runtime_error(message){}
        };
        double value;
    };
    Triangle(Side const& a_, Side const& b_, Side const& c_) : a(a_), b(b_), c(c_),
        alpha(acos((b_ * b_ + c_ * c_ - a_ * a_) / (2 * b_ * c_))),
        beta(acos((a_ * a_ + c_ * c_ - b_ * b_) / (2 * a_ * c_))),
        gamma(acos((b_ * b_ + a_ * a_ - c_ * c_) / (2 * a_ * b_))){}
    Triangle(Side const& a_, Side const& b_, Angle const& gamma_) : a(a_), b(b_), gamma(gamma_),
        c(sqrt(a_ * a_ + b_ * b_ - 2 * a_ * b_ * cos(gamma_))),
        alpha(acos((b_ * b_ + pow((sqrt(a_ * a_ + b_ * b_ - 2 * a_ * b_ * cos(gamma_))), 2) - a_ * a_) / (2 * b_ * (sqrt(a_ * a_ + b_ * b_ - 2 * a_ * b_ * cos(gamma_)))))),
        beta(acos((a_ * a_ + c * c - b_ * b_) / (2 * a_ * c))){}
    Triangle(Side const& a_, Angle const& beta_, Angle const& gamma_) : a(a_), beta(beta_), gamma(gamma_),
        alpha(Angle::pi - beta_ - gamma_),
        c((a_ / sin(Angle::pi - beta_ - gamma_)) * sin(gamma_)),
        b((a_ / sin(Angle::pi - beta_ - gamma_)) * sin(beta_)){}
    friend std::ostream& operator<< (std::ostream& os, Triangle const& t)
    {
        return os << "sides: " << t.a << ' ' << t.b << ' ' << t.c
            << "\nangles: " << t.alpha << ' ' <<t.beta << ' ' << t.gamma;
    }
private:
    Side a, b, c;
    Angle alpha, beta, gamma;
};
 
double const Triangle::Angle::pi = 3.14159;
 
typedef Triangle::Side tside;
typedef Triangle::Angle tangle;
 
int main()
{
    try
    {
        Triangle tr(tside(6), tside(3), tside(4));
        std::cout << tr << std::endl;
        Triangle tr1(tside(8), tangle(1.5), tangle(1.1)); // угол в радианах
        std::cout << tr1 << std::endl;
    }
    catch(std::exception const& e)
    {
        std::cerr << "Exception: " << e.what() << std::endl;
    }
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru