Консультация № 179095
14.06.2010, 17:42
42.39 руб.
0 1 1
Здравствуйте, уважаемые эксперты.
Помогите с задачей на VBA.

В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1. Количество элементов массива, лежащих в диапазоне от А до В.
2. Сумму элементов массива, расположенных после максимального элемента. Упорядочить элементы массива по убыванию модулей.

Обсуждение

Неизвестный
14.06.2010, 18:19
общий
это ответ
Здравствуйте, Svistaplas90.
В приложении приведен один из возможных вариантов решения.

Приложение:
' В одномерном массиве, состоящем из n вещественных элементов, вычислить:
' 1. Количество элементов массива, лежащих в диапазоне от А до В.
' 2. Сумму элементов массива, расположенных после максимального элемента. Упорядочить элементы массива по убыванию модулей.

Const N = 10
Const A = 3 ' left border
Const B = 7 ' right border
Dim Ar(1 To N) As Double
Dim count As Integer, maxi As Integer
Dim Sum As Double, max As Double, temp As Double
Dim Result As String

Sub init() ' fill array
For i = 1 To N
Ar(i) = CDbl(15 * Rnd) - 5
Next i
End Sub

Sub q1()
For i = 1 To N
If (Ar(i) >= A) And (Ar(i) <= B) Then
count = count + 1
End If
Next i
Result = Result & "Q1: count in [" & A & ", " & B & "]= " & count & vbNewLine
End Sub

Sub q2()
max = Ar(1)
maxi = 1
For i = 2 To N
If (Ar(i) > max) Then
max = Ar(i)
maxi = i
End If
Next i
' Special Sum
Sum = 0
For i = maxi + 1 To N
Sum = Sum + Ar(i)
Next i
Result = Result & "Q2: Sum = " & Format(Sum, "0.000") & vbNewLine
' Special sort array
For i = 1 To N - 1
For j = i + 1 To N
If (Abs(Ar(i)) <= Abs(Ar(j))) Then '!!! Abs()
temp = Ar(j)
Ar(j) = Ar(i)
Ar(i) = temp
End If
Next j
Next i
' generate Result
Result = Result & "Sorted array:" & vbNewLine
For i = 1 To N
Result = Result & "Ar[" & i & "] = " & Format(Ar(i), "0.000") & vbNewLine
Next i
End Sub


Sub main()
count = 0
Result = "Results." & vbNewLine
Call init
Call q1
Call q2
MsgBox Result
End Sub
Форма ответа