Megovova
1

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

26.10.2010, 17:59. Показов 2609. Ответов 8
Метки нет (Все метки)

Ввести координаты трех точек и по ним определить треугольник ето или нет если да то какой...Пожалуйста помогите очень надо (
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.10.2010, 17:59
Ответы с готовыми решениями:

Ввести координаты 10 точек на плоскости и определить в какой из четвертей больше всего точек
Всем привет. Есть задание ввести координаты 10 точек. Не без помощи интернета смог написать код,...

Ввести координаты точек. Вычислить расстояния от всех точек до точки, введенной последней
С клавиатуры вводятся координаты точек на плоскости в виде строк, представляющих пару в формате...

Определить образуют ли треугольник координаты трех точек
Ввести числа , которые являются значениями коор-динат трех точек на плоскости. Определить,...

Вычислить координаты центра тяжести трех материальных точек
Вычислить координаты центра тяжести трех материальных точек с массами m1, m2, m3 и координатами...

8
1664 / 1133 / 80
Регистрация: 21.08.2008
Сообщений: 4,726
Записей в блоге: 1
26.10.2010, 18:05 2
по любому треугольник будет
0
Эксперт С++
5053 / 3114 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
26.10.2010, 18:07 3
oxotnik, уверены? А если точки такие:
(0, 1); (0, 2); (0, 3)
?
0
1664 / 1133 / 80
Регистрация: 21.08.2008
Сообщений: 4,726
Записей в блоге: 1
26.10.2010, 18:10 4
silent_1991, и что?
частный случай треугольника, который превратился в отрезок
0
Эксперт С++
5053 / 3114 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
26.10.2010, 18:11 5
oxotnik, т.е. отрезок вы треугольником называете? А точку?
0
Megovova
26.10.2010, 18:34 6
ааа и на С++ надо ето все помогите люди...
1664 / 1133 / 80
Регистрация: 21.08.2008
Сообщений: 4,726
Записей в блоге: 1
26.10.2010, 23:24 7
Цитата Сообщение от silent_1991 Посмотреть сообщение
oxotnik, т.е. отрезок вы треугольником называете? А точку?
я ж говорю - частный случай, все вершины треугольника совпадают в одной точке. Геометрию в школе не учили?
0
Эксперт С++
5053 / 3114 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
27.10.2010, 09:57 8
oxotnik, что-то я не припомню, чтобы все повсеместно геометрические фигуры были частными случаями других фигур... По вашей логике треугольник - частный случай N-угольника, у которого N-2 вершины совпали в одной точки, и в то же время 5-угольник - частный случай того же N-угольника, у которого уже N-4 вершины совпали в одной точке... Это может фактически верно (на счёт этого не спорю), но в геометрии это так не называется (отрезок не называют частным случаем треугольника, как и точку). Ведь мы можем ввести 10 точек, которые лягут на одну прямую, и тогда этот отрезок можно считать и частным случаем треугольника, и частным случаем 10-угольника, и даже 1000000-угольника. А в данном задании важно выдать название фигуры, поэтому если для отрезка она выдаст "Треугольник", такую программу не зачтут.
0
Эксперт С++
3219 / 1746 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
28.10.2010, 23:06 9
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2010, 23:06
Помогаю со студенческими работами здесь

Заданы координаты трех точек. Определить периметр треугольника, вершинами которого являются заданные точк
Напишите код, пожалуйста С++

заданы координаты трех точек. Напишите программу, которая проверяет, являются ли эти точки вершинами треугольника.
На входе заданы координаты трех точек. Напишите программу, которая проверяет, являются ли эти точки...

Даны координаты трех точек на плоскости. Если они могут быть вершинами равнобедренного треугольника, вычислите его площа
Даны координаты трех точек на плоскости. Если они могут быть вершинами равнобедренного...

Даны координаты трех точек на плоскости. Если они могут быть вершинами равнобедренного остроугольного треугольника, вычислить его площадь. Где ошибка?
Даны координаты трех точек на плоскости. Если они могут быть вершинами равнобедренного...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru