Здравствуйте, помогите, пожалуйста, написать вторую часть для данной задачи.
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) минимальный элемент
2) сумму элементов массива, расположенных между первым и последним положительными элементами.
Sub Massive()
Dim A() As Integer, n As Integer
Dim imin As Integer, I As Integer, k As Integer
Worksheets("Лист1").Range("A2:H30").Clear
n = InputBox("Введите количество элементов")
ReDim A(1 To n)
Randomize
For I = 1 To n
A(I) = Int((50 - (-50) - 1 + 1) * Rnd + (-50))
Worksheets("Лист1").Cells(I + 1, 1) = A(I)
Next
imin = 1
For I = 1 To n
If A(I) < A(imin) Then imin = I
Next
Worksheets("Лист1").Cells(3, 2) = A(imin)
Worksheets("Лист1").Cells(2, 2) = "Минимальное значение"
Worksheets("Лист1").Cells(1, 1) = "Исходный массив"
Worksheets("Лист1").Cells(1, 2) = "Результирующий массив"
End Sub
Макрос
Sub Massive()
Dim A() As Integer, n As Integer
Dim imin As Integer, i As Integer, k As Integer
Dim iFirst As Integer, iLast As Integer, dblSum As Double
Worksheets("Лист1").Range("A2:H30").Clear
n = InputBox("Введите количество элементов")
ReDim A(1 To n)
Randomize
For i = 1 To n
A(i) = Int((50 - (-50) - 1 + 1) * Rnd + (-50))
Worksheets("Лист1").Cells(i + 1, 1) = A(i)
Next
imin = 1
For i = 1 To n
If A(i) < A(imin) Then imin = i
Next
' Сумма элементов массива, расположенных между первым и последним положительными элементами.
' Поиск первого положительного элемента.
For i = 1 To UBound(A) Step 1
If A(i) > 0 Then
iFirst = i
Exit For
End If
Next i
' Поиск последнего положительного элемента.
For i = UBound(A) To 1 Step -1
If A(i) > 0 Then
iLast = i
Exit For
End If
Next i
' Проверка, есть ли вообще положительные элементы. Достаточно проверить одну переменную.
If iFirst = 0 Then
' Переход в нужную часть кода.
GoTo metka
End If
' Если первый и последний полож. элемент это один элемент (нужно считать между).
If iFirst = iLast Then
GoTo metka
End If
' Если первый и последний полож. элементы находятся рядом.
If iLast - iFirst = 1 Then
GoTo metka
End If
' Подсчёт суммы.
For i = iFirst + 1 To iLast - 1 Step 1
dblSum = dblSum + A(i)
Next i
metka:
Worksheets("Лист1").Cells(3, 2) = A(imin)
Worksheets("Лист1").Cells(2, 2) = "Минимальное значение"
Worksheets("Лист1").Cells(1, 1) = "Исходный массив"
Worksheets("Лист1").Cells(1, 2) = "Результирующий массив"
' Здесь сделайте результат по сумме между положительными.
' Если нет положительных.
If iFirst = 0 Then
' Если только одно положительное.
ElseIf iFirst = iLast Then
' Если первый и последний полож. элементы находятся рядом.
ElseIf iLast - iFirst = 1 Then
' Если есть сумма.
Else
End If
End Sub
Спасибо, программа работает!
Спасибо большое, программа работает!