С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Ввести координаты трех точек и ... - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вопрос по деревьям в с++ http://www.cyberforum.ru/cpp-beginners/thread181955.html
Нарад помогите разобраться с прогой. Вот задание. Имеется дерево вызовов процедур некоторой программы. Структура программы такова, что каждая вызываемая процедура вложена в вызывающую ее процедуру....
C++ Построить класс для описания плоской геометрической фигуры квадрат Помогите написать программу в Борланд С++, вот условие: 1.Сложить целые и нецелые части двох действительных чисел. например: 1,8 и 5,3. 2.Построить класс для описания плоской геометрической фигуры... http://www.cyberforum.ru/cpp-beginners/thread181948.html
C++ Таймер времени
Нужно написать таймер который бы отсчитывал оставшееся время (в днях\часах\секундах\)до заданого числа с привязкой с системному времени. т.е допустим сегодня 26.10.2010 а надо отсчитать оставшееся...
C++ Задание по ЛОС
Всем доброго времени суток, помогите написать программу для работы с ЛОС (линейный однонаправленный список) Вот краткие условия задания: 1)Список должен быть: однонаправленным. 2)C поиском...
C++ разбить класс http://www.cyberforum.ru/cpp-beginners/thread181921.html
Всем привет! Задача Описание класса находится в файле myfile.h . Описание функций в myfile.cpp. Необходимо перенести часть функций в файл myfile2.cpp Возможно ли такое ?
C++ Вычисление количиства символов в строке (BCB6) Мне нада написать програму на С++ bilder6 на языке С для вычисления количиства символов в строке вот то что я написал исправте плиз или переделайте #include <stdio.h> #include <string.h> #include... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
28.10.2010, 23:06
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
//////////////////////////////////////////////////////////////////////////////////////
#include <cmath>
#include <complex>
#include <iostream>
#include <limits>
#include <set>
//////////////////////////////////////////////////////////////////////////////////////
typedef double                 T_coord;
typedef std::complex<T_coord>  T_point;
typedef std::set<T_coord>      T_angles;
//////////////////////////////////////////////////////////////////////////////////////
template<class T>
bool  equal_to_for_real(T a, T b) 
{
    const T  coef = 10;    
    return abs(a - b) < 0.001;
}
/////////////////////////////////////////////////////////////////////////////////////
template<class T>
bool  greater_for_real(T a, T b) 
{
    return a > b
           && !equal_to_for_real(a, b);
}
/////////////////////////////////////////////////////////////////////////////////////
template<class T>
bool  less_for_real(T a, T b) 
{
    return a < b
           && !equal_to_for_real(a, b);
}
/////////////////////////////////////////////////////////////////////////////////////
template<class T>
bool  greater_equal_for_real(T a, T b) 
{
    return !less_for_real(a, b);
}
/////////////////////////////////////////////////////////////////////////////////////
template<class T>
bool  less_equal_for_real(T a, T b) 
{
    return !greater_for_real(a, b);
}
/////////////////////////////////////////////////////////////////////////////////////
T_point  vect(T_point  A, T_point  B)
{
    return  B - A;
}
//////////////////////////////////////////////////////////////////////////////////////
struct  T_point_compare
{
    bool  operator() (T_point  A, T_point  B)
    {
        return equal_to_for_real(A.real(), B.real()) 
            ? less_for_real(A.imag(), B.imag()) : less_for_real(A.real(), B.real());
              
    }
};
//////////////////////////////////////////////////////////////////////////////////////
typedef std::set<T_point, T_point_compare>  T_triangle;
//////////////////////////////////////////////////////////////////////////////////////
 
void  print_triangle_type(T_triangle  triangle)
{
    std::cout << "Тип треугольника:"
              << std::endl;
 
    if(triangle.size() < 3)
    {
        std::cout << '\t'
                  << "вырожденный"
                  << std::endl;
        return;
    }
 
    T_point  A = *triangle.begin();
    triangle.erase(A);
 
    T_point  B = *triangle.begin();
    triangle.erase(B);
 
    T_point  C = *triangle.begin();
 
    T_point  AB = vect(A, B);
    T_point  AC = vect(A, C);
    T_point  BC = vect(B, C);
 
    if(equal_to_for_real(0.0, arg(AB / AC)))
    {
        std::cout << '\t'
                  << "вырожденный"
                  << std::endl;
        return;
    }
 
    if(   equal_to_for_real(abs(AB), abs(AC))
       && equal_to_for_real(abs(AB), abs(BC)))
    {
        std::cout << '\t'
                  << "равносторонний"
                  << std::endl;
        return;    
    }
 
    bool is_isosceles =    equal_to_for_real(abs(AB), abs(AC))
                        || equal_to_for_real(abs(AB), abs(BC))
                        || equal_to_for_real(abs(AC), abs(BC));    
    
    std::cout << '\t'
              << (is_isosceles ? "равнобедренный" : "разносторонний")
              << std::endl;
 
    T_coord  angleA = abs(arg( AB /  AC));
    T_coord  angleB = abs(arg(-AB /  BC));
    T_coord  angleC = abs(arg(-AC / -BC));
 
    T_angles  angles;
    angles.insert(angleA);
    angles.insert(angleB);
    angles.insert(angleC);
 
    T_coord  angle_max = *angles.rbegin();
    const T_coord  RIGHT_ANGLE = acos(0.0);
 
    if(equal_to_for_real(angle_max, RIGHT_ANGLE))
    {
        std::cout << '\t'
                  << "прямоугольный"
                  << std::endl;    
    }
    else if(less_for_real(angle_max, RIGHT_ANGLE))
    {
        std::cout << '\t'
                  << "остроугольный"
                  << std::endl;    
    }
    else
    {
        std::cout << '\t'
                  << "тупоугольный"
                  << std::endl;    
    }
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));   
    std::cout << "Введите координаты вершин треугольника:"
              << std::endl;
 
    T_triangle  triangle;
    for(char point_name = 'A'; point_name <= 'C'; ++point_name)
    {
        std::cout << std::endl
                  << '\t'
                  << point_name
                  << "x = ";
 
        T_coord X = 0;
        std::cin >> X;
 
        std::cout << '\t'
                  << point_name
                  << "y = ";
 
        T_coord Y = 0;
        std::cin >> Y;
        triangle.insert(T_point(X, Y));
    }
    print_triangle_type(triangle);
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.