Top.Mail.Ru
Ответы

Нужна помощь прогромистов

Public Sub dim7()
Const n = 8
Dim a(n), x(n) As Single
Dim i As Integer
Dim h, s, p, p1, r As Single
For i = 1 To n
a(i) = Cells(i + 1, 1)
x(i) = Cells(i + 1, 2)
Next i
s = 0: p1 = 1
For i = 1 To n
s = s + x(i) ^ a(i)
h = Sin(s)
p1 = p1 * Log(x(i)) **********************
p = (1 / 3) * p1
Next i
If Abs(h) <= 0.5 Then
r = h + p - 1
Else
r = (p * h) / (p + h)
End If
Cells(12, 1) = "r="
Cells(12, 2) = r
End Sub

VBA выдает ошибку №5 "Invalid procedure call or argument" (строка *********** )
Помогите решить проблему
[ссылка заблокирована по решению администрации проекта]

Дополнен

Во избежании дальнейших вопросов, поясню:
"***********" - это я просто пометил стоку в которой выдает ошибку.

По дате
По Рейтингу
Аватар пользователя
Мастер
15лет

проверьте значение x(i) для каждого i

Аватар пользователя
Мастер
15лет

ошибку пишет потому что какое то значение в x(i) меньше или равно 0
логарифм может быть посчитан только от положительного числа

и еще, в бейсике надо писать тип к каждой переменной, иначе смысла нет объявлять вообще
т. к. переменные будут с автоматически изменяемыми типами, что может привести к неверным вычислениям

Dim a(n) As Single, x(n) As Single
Dim i As Integer
Dim h As Single, s As Single, p As Single, p1 As Single, r As Single

Аватар пользователя
Профи
15лет

**********************
а что это за строка из символов если не секрет что она делает ?

Аватар пользователя
Мастер
15лет

не знаток. . но может быть, представить x(i) в качестве отдельной переменной в Log(x(i))..