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

Являются ли точки вершинами прямоугольного треугольника - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
Waik
10 / 10 / 1
Регистрация: 23.04.2013
Сообщений: 55
23.04.2013, 13:45     Являются ли точки вершинами прямоугольного треугольника #1
Здравствуйте. Такая вот задача, даны три точки на плоскости. Нужно проверить являются ли они вершинами прямоугольного треугольника.

Я составил вот такое условие:
a,b,c - точки
x,y - координаты точек.
Код
if( (b.x == a.x) || (b.y == a.y) )
   if( (c.x == b.x) || (c.y == b.y) ){
    //является!
   }
Но вот проблема в том, что это условие не универсально и предположим если координаты точек установить так:
a= {1,1};b= {1,4};c= {3,4}, условие работает.
Если сменить порядок:
a= {1,1};b= {3,4};c= {1,4}, условие не выполнится.

С увожением,Waik/
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2013, 13:45     Являются ли точки вершинами прямоугольного треугольника
Посмотрите здесь:

C++ Определить 3 точки, являющиеся вершинами треугольника, для которых разность точек вне е го и внутри является минимальной.
C++ заданы координаты трех точек. Напишите программу, которая проверяет, являются ли эти точки вершинами треугольника.
C++ Являются ли точки вершинами треугольника
C++ Диагонали (Четыре точки являются вершинами параллелограмма. Определить длину диагоналей и найти координаты )
C++ Заданы координаты трех точек. Определить периметр треугольника, вершинами которого являются заданные точк
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
23.04.2013, 13:52     Являются ли точки вершинами прямоугольного треугольника #2
Waik, теорема Пифагора тебе в помощ
Waik
10 / 10 / 1
Регистрация: 23.04.2013
Сообщений: 55
23.04.2013, 13:54  [ТС]     Являются ли точки вершинами прямоугольного треугольника #3
Ошибка "С уважением".
aram_gyumri спасибо, забыл про нее, попробую.
Но ведь точки дают в произвольном порядке, я не знаю какая из них является катетом а какая гипотенузой.
PazDim
5 / 5 / 0
Регистрация: 08.08.2011
Сообщений: 93
23.04.2013, 14:17     Являются ли точки вершинами прямоугольного треугольника #4
Цитата Сообщение от Waik Посмотреть сообщение
Ошибка "С уважением".
aram_gyumri спасибо, забыл про нее, попробую.
Но ведь точки дают в произвольном порядке, я не знаю какая из них является катетом а какая гипотенузой.
Написать функцию для трех точек и рассмотреть три случая?
Waik
10 / 10 / 1
Регистрация: 23.04.2013
Сообщений: 55
23.04.2013, 18:11  [ТС]     Являются ли точки вершинами прямоугольного треугольника #5
Нужно сначала определить катеты и гипотенузу, потом их длины посчитать. Как ?
Catstail
Модератор
 Аватар для Catstail
21434 / 10219 / 1666
Регистрация: 12.02.2012
Сообщений: 17,092
23.04.2013, 18:20     Являются ли точки вершинами прямоугольного треугольника #6
Если (x1,y1), (x2,y2), (x3,y3) составляют прямоугольный треугольник (и при этом попарно не совпадают), то убедиться в том, что треугольник прямоугольный можно так:

C++
1
2
3
4
    if (abs((x2-x1)*(x3-x1)+(y2-y1)*(y3-y1)) <= 1E-9)
       cout << "Прямоугоьный" << endl;
    else
       cout << "Не прямоугольный" << endl;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2013, 20:33     Являются ли точки вершинами прямоугольного треугольника
Еще ссылки по теме:

Если три точки могут быть вершинами разностороннего тупоугольного треугольника, вычислите его площадь C++
Если точки могут быть вершинами равностороннего треугольника, вычислить его площадь и длину высоты C++
C++ Определить, могут ли три точки с координатами являться вершинами треугольника

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

Или воспользуйтесь поиском по форуму:
Waik
10 / 10 / 1
Регистрация: 23.04.2013
Сообщений: 55
23.04.2013, 20:33  [ТС]     Являются ли точки вершинами прямоугольного треугольника #7
Победил ее!
Результат:
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
// Author: Waik
 
#include "stdafx.h"
#include <iostream>
const int N=7;
struct TPoint{
        double x,y;
        };
struct TPoint PS[N]={{-2,-2},
                              {2,-2},
                               {1,1},
                               {4,2},
                                {3,4},
                                {1,4},
                                {-3,4}
                                        };
void Triangle();
double Dt(TPoint a, TPoint b);
 
int _tmain(int argc, _TCHAR* argv[])
{
        Triangle();
        system("pause");
        return 0;
}
 
double Dt(TPoint a, TPoint b){
        double temp;
        temp= pow((a.x-b.x),2.0) + pow((a.y-b.y),2.0);
        return temp;
}
 
void Triangle(){
        int i,j,k;
 
        for (i=0; i<N-2;i++)
                for (j=i+1;j<N-1;j++)
                        for(k=j+1;k<N;k++)
                                if( (Dt(PS[i],PS[j]) == Dt(PS[j],PS[k])+Dt(PS[k],PS[i])) ||
                                    (Dt(PS[j],PS[k]) == Dt(PS[i],PS[j])+Dt(PS[k],PS[i])) ||
                                    (Dt(PS[k],PS[i]) == Dt(PS[i],PS[j])+Dt(PS[j],PS[k]))
                                  )
                                  printf("{%1.0f,%1.0f;%1.0f,%1.0f;%1.0f,%1.0f}\n",PS[i],PS[j],PS[k]);
}
Yandex
Объявления
23.04.2013, 20:33     Являются ли точки вершинами прямоугольного треугольника
Ответ Создать тему
Опции темы

Текущее время: 05:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru