Тригонометрическая функция: деление на ноль, если ничего не вводить в TextBox - VB
Формулировка задачи:
Почему он выводит деление на ноль если ничего не вводить в текст боксы?
Почему он выводит ошибку из-за корня из отрицательного числа, если поставил условие.
Спасибо=*
Решение задачи: «Тригонометрическая функция: деление на ноль, если ничего не вводить в TextBox»
textual
Листинг программы
'На форме текстбоксы с именами: g1, Vo1, Hm1, al1 и рисунок Image2 Function ArcSin(X As Double) As Double 'результат в радианах If Abs(X) = 1 Then ArcSin = Sgn(X) * 3.14159265358979 / 2: Exit Function ArcSin = Atn(X / Sqr(-X * X + 1)) End Function Private Sub Image2_Click() Const TO_DEG = 180 / 3.14159265358979 Dim g#, Vo#, Hm#, al# 'Double g1.Text = Replace(g1.Text, ".", ",", , , vbTextCompare) If IsNumeric(g1.Text) Then g = CDbl(g1.Text) Else: MsgBox "Введите g правильно!", , "": Exit Sub If g < 0 Then MsgBox "Ошибка: g < 0!", , "": Exit Sub Vo1.Text = Replace(Vo1.Text, ".", ",", , , vbTextCompare) If IsNumeric(Vo1.Text) Then Vo = CDbl(Vo1.Text) Else: MsgBox "Введите Vo правильно!", , "": Exit Sub If Vo = 0 Then MsgBox "Vo не должно быть нуль!", , "": Exit Sub Hm1.Text = Replace(Hm1.Text, ".", ",", , , vbTextCompare) If IsNumeric(Hm1.Text) Then Hm = CDbl(Hm1.Text) Else: MsgBox "Введите Hm правильно!", , "": Exit Sub If Hm < 0 Then MsgBox "Ошибка: Hm < 0!", , "": Exit Sub al = ((2 * g * Hm) ^ (1 / 2)) / Vo If Abs(al) > 1 Then MsgBox "Модуль аргумента арксинуса > 1!" & vbCrLf & "Введите другие параметры", , "": Exit Sub al = ArcSin(al) * TO_DEG 'результат в градусах al1.Text = al End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д