АБ
Андрей Буковский

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

Работает, словно проверяет, существует ли треугольник вообще, а не проверяет на прямоугольный угол

Написать определение функции, возвращающей 1, если треугольник
является прямоугольным и 0 в противоположном случае.

#include
#include

using namespace std;

int treugpr(int xa,int ya,int xb,int yb,int xc,int yc) {
float p1,p2,p3,d1,d2,d3;
p1=sqrt((xb-xa)*(xb-xa)+(yb-ya)*(yb-ya));
p2=sqrt((xc-xa)*(xc - xa)+(yc-ya)*(yc-ya));
p3=sqrt((xc-xb)*(xc - xb)+(yc-yb)*(yc-yb));
d1=p1*p1;
d2=p2*p2;
d3=p3*p3;
if ((d1=d2+d3) || (d2=d1+d3) || (d3=d1+d2)) return 1; else return 0;
}

int main()
{
cout << treugpr(5,0,0,10,0,6);
system("pause");
}

с таким набором выдает 1, а должно быть 0..

Альберт Туляков
Альберт Туляков

Не на Паскале же программируешь, = и == отличать надо...

Игорь Тофан
Игорь Тофан

1. Зачем сначала брать корень, а потом возводить в квадрат? Тут вполне можно целой арифметикой обойтись.
2. Сравнения в C/C++ обозначаются ==, присваивания =. Посмотри внимательнее на последнее выражение.

Наиль Садреев
Наиль Садреев

Нет, алгоритм правильный.
Сначала вычисляются длины трёх сторон треугольника (p1, p2, p3)
Потом они возводятся в квадртат: (d1=p1*p1; и т. д)
Затем проверяются на теорему пифагора: Квадрат гипотенузы = сумме квадратов катетов: d1==d2+d3 (Т. к мы не знаем, какая именно сторона является гипотенузой => проверяем все варианты)

С учётом всех замечаний:
int treugpr(int xa,int ya,int xb,int yb,int xc,int yc) {
float p1,p2,p3;
p1=(xb-xa)*(xb-xa)+(yb-ya)*(yb-ya);
p2=(xc-xa)*(xc-xa)+(yc-ya)*(yc-ya);
p3=(xc-xb)*(xc-xb)+(yc-yb)*(yc-yb);
if ((p1==p2+p3) || (p2==p1+p3) || (p3==p1+p2)) return 1; else return 0;
}

ОП
Олеся Пак

Так вы не сравнивайте на точное равенство. То есть 1.0 + 1.0 <> 2.0.
Зато fabs( (1.0 + 1.0) - 2.0 ) < epsilon) , где epsilon к примеру 0.0001 будет работать верно.
А еще вы не сраниваете, а присваиваете внутри if-а 🙂

Похожие вопросы
Определить координаты третьей вершины треугольника
даны координаты вершин треугольника MPT
Даны координаты вершин треугольника. Определить является ли треугольник прямоугольным.
Как найти координаты высоты треугольника зная координаты вершин?
вычислить высоты треугольника зная координаты его вершин (на visual basic)
по координатам вершин треугольника АВС выяснить является ли он остроуголным, прямоугольным или тупогольным
вершины треугольника АВС имеют координаты:
Даны координаты вершин треугольника ABC
как найти углы треугольника, зная координаты вершин?
По координатам вершин треугольника АВС найти: