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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
Waik
10 / 10 / 1
Регистрация: 23.04.2013
Сообщений: 59
#1

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

23.04.2013, 13:45. Просмотров 2474. Ответов 6
Метки нет (Все метки)

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

Я составил вот такое условие:
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++):

Являются ли точки вершинами треугольника - C++
Помогите пожалуйста решить задачу в С++ с помощью функции =) На входе заданы координаты трех точек. Напишите программу, которая...

Определить, являются ли заданные точки вершинами треугольника - C++
Задание: Вводятся координаты трех точек на плоскости. Определить, являются ли данные точки вершинами треугольника. Если да, то найти...

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

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

Определить, являются ли точки заданного множества вершинами параллелограмма - C++
Здравствуйте! Такое вот задание: Определить, являются ли точки заданного множества вершинами параллелограмма со сторонами, параллельными...

Являются ли точки заданного множества вершинами параллелограмма со сторонами, параллельными оси ОХ - C++
Определить, являются ли точки заданного множества вершинами параллелограмма со сторонами, параллельными оси ОХ. Если точки множества...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
dr.curse
388 / 344 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
23.04.2013, 13:52 #2
Waik, теорема Пифагора тебе в помощ
Waik
10 / 10 / 1
Регистрация: 23.04.2013
Сообщений: 59
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
Сообщений: 59
23.04.2013, 18:11  [ТС] #5
Нужно сначала определить катеты и гипотенузу, потом их длины посчитать. Как ?
Catstail
Модератор
22538 / 10943 / 1775
Регистрация: 12.02.2012
Сообщений: 18,080
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;
Waik
10 / 10 / 1
Регистрация: 23.04.2013
Сообщений: 59
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]);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2013, 20:33
Привет! Вот еще темы с ответами:

Определить, могут ли три точки быть вершинами треугольника - C++
Всем привет!Помогите решить задачи завтра нужно сдать.Составить алгоритм по блокам,в письменном виде.Если не сложно фотки киньте с...

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

Определить, могут ли три точки с координатами являться вершинами треугольника - C++
Здравствуйте. Помогите написать алгоритм и блок схему к работе. Определить, могут ли три точки с координатами (x1, y1), (x2, y2), (x3,...

Диагонали (Четыре точки являются вершинами параллелограмма. Определить длину диагоналей и найти координаты ) - C++
Помогите!!! Четыре точки A(x1; y1), B(x2; y2), C(x3; y3), D(x4; y4) являются вершинами параллелограма. Определить длину диагоналей и...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.04.2013, 20:33
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru