Войти

Показать полную графическую версию : Расчет по процедуре пользователя


daniil_im
30-05-2018, 20:59
Есть программа генерирующая массивы из 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

Busla
31-05-2018, 12:15
Похоже, что правильно.
Инициализировать массив от 0 до N, а использовать от 1 до N - неряшливая практика.

Процедура не должна содержать глобальных переменных.»
Кривая формулировка. Процедура по определению не может содержать глобальных переменных. То ли речь про использование, то ли про константы(?) a, b, c.




© OSzone.net 2001-2012