 |
|
Расчет по процедуре пользователя
Есть программа генерирующая массивы из N действительных чисел вводимых пользователем, которые необходимы для вычисления формулы: yi=a*xi^2+b*xi+c
Вот ее код:
Код:
A = 10
B = 5
C = 1
InDann = "A=" + CStr(A) + " B=" + CStr(B) + " C=" + CStr(C) + vbCrLf
do
N = InputBox(InDannX + "Введите количество элементов массива", "Y(i)=AX(i)^2+BX(i)+C")
If Not IsNumeric(N) Then exit do
N = CInt(N) - 1
If N < 0 Then exit do
ReDim X(N)
For i = 0 To N
X(i) = Rnd
Next
For Each xi In X
Y = A * xi ^ 2 + B * xi + C
MsgBox InDann + "X(i)=" + CStr(xi) + vbCrLf + "Y(i)=AX(i)^2+BX(i)+C= " + CStr(Y)
next
loop
Нужно реализовать вычисление через процедуру пользователя. Процедура не должна содержать глобальных переменных.
Вот что у меня получилось, правильно ли?
Код:
N= InputBox("Введите количество элементов массива")
ReDim x(N)
For i = 0 To N
x(i) = Rnd
Next
Call ForYi(N, x,yi)
MsgBox yi & vblf
Sub ForYi(ByVal N1,x(),yi)
a= 10
b= 5
c= 1
For i = 1 To N1
e = x(i)
z = a * e^2 + b * e + c
yi = yi & i & "ответ: " & z & vblf
Next
End Sub
|
Похоже, что правильно.
Инициализировать массив от 0 до N, а использовать от 1 до N - неряшливая практика.
Цитата:
Цитата daniil_im
Процедура не должна содержать глобальных переменных. »
|
Кривая формулировка. Процедура по определению не может содержать глобальных переменных. То ли речь про использование, то ли про константы(?) a, b, c.
|
Время: 09:21.
© OSzone.net 2001-