Сформировать вектор из элементов, что представляют среднее арифметическое массивов А, В, С - VB
Формулировка задачи:
Помоги пожалуйста сделать задание!
Сформировать вектор Р из элементов, что представляют собой среднее арифметическое массивов А, В, С соответственно. Определить длину вектора Р.
Заранее благодарна!
Решение задачи: «Сформировать вектор из элементов, что представляют среднее арифметическое массивов А, В, С»
textual
Листинг программы
Function avg_vect(A() As Double, B() As Double, C() As Double) As Double()
Dim P() As Double
'::: Îïðåäåëÿåì ГЈГ°Г*Г*ГЁГ¶Г» ГЁГ±Гµ. Г¬Г*ññèâîâ
na% = UBound(A, 1)
nb% = UBound(B, 1)
nc% = UBound(C, 1)
'::: ïðåäâГ*ðèòåëüГ*îå âûäåëåГ*ГЁГҐ ГЇГ*ìÿòè
ReDim P(1 To na% + nb% + nc%) As Double
'::: Г±Г·ГЁГІГ*ГҐГ¬ ñðåäГ*ГЁГҐ
sa# = avg(A)
sb# = avg(B)
sc# = avg(C)
o% = 0
'::: ÑáðГ*ñûâГ*ГҐГ¬ ñðåäГ*ГЁГҐ ГЁГ§ A -> P
For i% = 1 To na%
If Abs(sa# - A(i%)) <= 0.00000000000001 Then
o% = o% + 1
P(o%) = A(i%)
End If
Next i%
'::: ÑáðГ*ñûâГ*ГҐГ¬ ñðåäГ*ГЁГҐ ГЁГ§ B -> P
For i% = 1 To nb%
If Abs(sb# - B(i%)) <= 0.00000000000001 Then
o% = o% + 1
P(o%) = B(i%)
End If
Next i%
'::: ÑáðГ*ñûâГ*ГҐГ¬ ñðåäГ*ГЁГҐ ГЁГ§ C -> P
For i% = 1 To nc%
If Abs(sc# - C(i%)) <= 0.00000000000001 Then
o% = o% + 1
P(o%) = C(i%)
End If
Next i%
If o% = 0 Then
MsgBox "ГЌГЁ îäèГ* ýëåìåГ*ГІ èñõîäГ*ûõ Г¬Г*ññèâîâ Г*ГҐ ñîâïГ*Г« Г±Г® ñðåäГ*ГЁГ¬"
End
Else
'::: ÎñâîáîæäГ*ГҐГ¬ ëèøГ*ГѕГѕ ГЇГ*ìÿòü
ReDim Preserve P(1 To o%) As Double
End If
avg_vect = P
End Function
'::: ГђГ*Г±Г·ГҐГІ ñðåäГ*ГҐГЈГ® Г§Г*Г*Г·ГҐГ*ГЁГї
Function avg(X() As Double) As Double
n% = UBound(X, 1)
s# = 0
For i% = 1 To n%
s# = s# + X(i%)
Next i%
avg = s# / n%
End Function
Sub Test()
Dim A(3) As Double
Dim B(3) As Double
Dim C(3) As Double
Dim P() As Double
A(1) = 1
A(2) = 2
A(3) = 3
B(1) = 11
B(2) = 22
B(3) = 33
C(1) = 111
C(2) = 111
C(3) = 111
P = avg_vect(A, B, C)
Debug.Print "ГђГ*çìåðГ*îñòü= "; UBound(P, 1)
For i% = 1 To UBound(P, 1)
Debug.Print "P("; i%; ")="; P(i%)
Next i%
End Sub