Другие языки программирования и технологии

Помогите написать программу на Visual Basic (найти ошибку)

Никогда не работал с VB, но теперь пришлось. Задание: написать программу, которая по 3 сторонам треугольника ABC определяет, прямоугольный ли он. Если нет, то находит угол С. Написал программу, там 1 окошко с тремя полями ввода, кнопкой пуск и полем вывода. Неработает. Текст ниже. Вопрос 1: Почему ругается на acos и где собственно ошибки? Вопрос 2: Как сделать проверку, что в поля введены именно числовые значения? Dim AB As Integer Dim BC As Integer Dim CA As Integer Private Sub Start_Click() AB = (TextAB.Text) BC = (TextBC.Text) CA = (TextCA.Text) If AB + BC < CA Or AB + CA < BC Or CA + BC < AB Then LabelResult.Caption = "Стороны заданы неверно" Else If AB ^ 2 = BC ^ 2 + CA ^ 2 Or BC ^ 2 = AB ^ 2 + CA ^ 2 Or CA ^ 2 = BC ^ 2 + AB ^ 2 Then LabelResult.Caption = "Треугольник прямоугольный" Else LabelResult.Caption = acos((BC ^ 2 + CA ^ 2 - AB ^ 2) / 2 * BC * CA) End If End If End Sub Буду рад, если кто поможет. Задачка простая, но я этого языка не знаю почти. Если кто может, скоректируйте до рабочего варианта.
Nurik Official Page
Nurik Official Page
293
нет такой функции

попробуй написать свою функцию, например:

' arc sine
' error if value is outside the range [-1,1]

Function ASin(value As Double) As Double
If Abs(value) <> 1 Then
ASin = Atn(value / Sqr(1 - value * value))
Else
ASin = 1.5707963267949 * Sgn(value)
End If
End Function

' arc cosine
' error if NUMBER is outside the range [-1,1]

Function ACos(ByVal number As Double) As Double
If Abs(number) <> 1 Then
ACos = 1.5707963267949 - Atn(number / Sqr(1 - number * number))
ElseIf number = -1 Then
ACos = 3.14159265358979
End If
'elseif number=1 --> Acos=0 (implicit)
End Function

' arc cotangent
' error if NUMBER is zero

Function ACot(value As Double) As Double
ACot = Atn(1 / value)
End Function

' arc secant
' error if value is inside the range [-1,1]

Function ASec(value As Double) As Double
' NOTE: the following lines can be replaced by a single call
' ASec = ACos(1 / value)
If Abs(value) <> 1 Then
ASec = 1.5707963267949 - Atn((1 / value) / Sqr(1 - 1 / (value * value)))
Else
ASec = 3.14159265358979 * Sgn(value)
End If
End Function

' arc cosecant
' error if value is inside the range [-1,1]

Function ACsc(value As Double) As Double
' NOTE: the following lines can be replaced by a single call
' ACsc = ASin(1 / value)
If Abs(value) <> 1 Then
ACsc = Atn((1 / value) / Sqr(1 - 1 / (value * value)))
Else
ACsc = 1.5707963267949 * Sgn(value)
End If
End Function
СП
Слава Писеуков
220
Лучший ответ
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim AB As Integer
Dim BC As Integer
Dim CA As Integer
AB = (TextBox1.Text)
BC = (TextBox2.Text)
CA = (TextBox3.Text)
If AB + BC < CA Or AB + CA < BC Or CA + BC < AB Then
Label1.Text = "Стороны заданы неверно"
Else
If AB ^ 2 = BC ^ 2 + CA ^ 2 Or BC ^ 2 = AB ^ 2 + CA ^ 2 Or CA ^ 2 = BC ^ 2 + AB ^ 2 Then
Label1.Text = "Треугольник прямоугольный"
Else
Label1.Text = "не прямоугольный"
End If
End If
End Sub

вариант то в принципе рабочий
арккосинус вызывается так: Math.Acos(double)
проверка на число IsNumeric(TextAB.Text)
Viktor Ullmer
Viktor Ullmer
588