Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Расчет по процедуре пользователя (http://forum.oszone.net/showthread.php?t=335112)

daniil_im 30-05-2018 20:59 2816211

Расчет по процедуре пользователя
 
Есть программа генерирующая массивы из 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 2816263

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

Цитата:

Цитата daniil_im
Процедура не должна содержать глобальных переменных.»

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


Время: 09:21.

Время: 09:21.
© OSzone.net 2001-