Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

VB ошибка Rutime 13

Тир Профи (660), на голосовании 9 лет назад
ошибка на c=(b+a)/2

Function f(x)
f = Sqr(1 - x) - Cos(Sqr(1 - x))
End Function

Private Sub btn_K_Click()
a = txt_a
b = txt_b
txt_faK = f(a)
Do
c = (a + b) / 2
If f(a) * f(c) > 0 Then a = c Else b = c
Loop While b - a > 0.001
txt_xK = Round((b + a) / 2, 7)
End Sub

Private Sub txt_a_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub

Private Sub txt_b_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub

Private Sub txt_fa_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub
Голосование за лучший ответ
... Гений (84865) 9 лет назад
Сказали бы именно в какой строке - было бы проще.

Лучше писать тип, который возвращает функция (не ошибка, но ...)
Function f(x as ...) as ...
Переменные тоже лучше описывать
Dim a as ...

=) Разобрались. Проблема была в "." у b (по нашему стандарту должна быть запятая) и что операция шла со строками уже (т. к. типы переменных не определены), а не с числами.
ТирПрофи (660) 9 лет назад
ошибка на c=(b+a)/2
... Гений (84865) Попробуйте в поле, где b не 0.9 а 0,9 И повторюсь - если описывать типы переменных ошибку было бы найти легче. А то у Вас похоже операции как со строками пошли =)
Похожие вопросы