Определение вида треугольника по координатам его вершин - Visual Basic .NET
Формулировка задачи:
Координаты вершин треугольника вводятся с клавиатуры.
Определить существует ли треугольник, а если существует то какой?
Почему не всегда выводит значение s2, а только иногда? Исправьте, пожалуйста ошибку.
Надо изменить последние две проверки
А прямоугольный не выводит скорее всего потому, что машинные вычисления не достаточно точные и величины не приравниваются.
Решение задачи: «Определение вида треугольника по координатам его вершин»
textual
Листинг программы
'…
MsgBox(getTypeTriangle(2, 2, 3.7))
'…
Private Function getTypeTriangle(ByVal a As Double, ByVal b As Double, ByVal c As Double) As String
Dim ss As String = String.Empty
Dim dd As Double = Double.Epsilon
If (a + b > c) And (b + c > a) And (a + c > b) Then
'треугольник существует
Dim hh() As Double = {a ^ 2, b ^ 2, c ^ 2}
Array.Sort(hh) 'hh(2) - максимальное значение
Dim h12 As Double = hh(1) + hh(0)
If hh(2) >= h12 - dd And hh(2) <= h12 + dd Then Return "треугольник прямоугольный"
If hh(2) < h12 Then
ss = "треугольник остроугольный"
If hh(2) - hh(1) < dd And hh(2) - hh(0) < dd And hh(1) - hh(0) < dd Then
ss &= " (равносторонний)"
ElseIf hh(2) - hh(1) < dd Or hh(2) - hh(0) < dd Or hh(1) - hh(0) < dd Then
ss &= " (равнобедренный)"
End If
Else
ss = "треугольник тупоугольный"
If hh(2) - hh(1) < dd Or hh(2) - hh(0) < dd Or hh(1) - hh(0) < dd Then
ss &= " (равнобедренный)"
End If
End If
Else
ss = "треугольник не существует"
End If
Return ss
End Function