Помощь - Поиск - Пользователи - Календарь
Полная версия: ПОмогите пожалуйста с VBA с массивами > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
_Victori_
вот такое у меня задание-сформировать элементы массива B(13) по правилу: b(i)=cos((пи*b(i-1))/2), где b1=1. Подсчитать кол-во нулевых элементов массива и сумму положительных элементов массива.
Вот что я сделала:
Private Sub CommandButton1_Click()
Dim b(1 To 13) As Single, i As Integer
p = 3.14159265
For i = 1 To 13
b(i) = Cells(1 + i, 2)
b(1) = 1
b(i) = Cos((p * b(i - 1)) / 2) вот здесь он не понимает значение b(i - 1),пишет что за рамки массива
выходит
If b(i) > 0 Then
s = s + b(i)
next i
TextBox1.Value = s
If b(i) = 0 Then
k = k + 1

Next i
TextBox2.Value = k
End Sub

я уже вообще полностью запуталась, помогите пжлст)
Евгений М.
У Вас первый элемент массива имеет индекс 1.
В первом шаге цикла производится попытка обратится к элементу с индексом 0.

Вообщем сделайте следующее:
1. Уберите "b(i) = Cells(1 + i, 2)"
2. Выносите "b(1) = 1" из цикла
3. Начальное значение s должно равнятся b(1)
4. Цикл начинайте с 2, вместо 1
_Victori_
всё переделала) т.к. мы делаем на учёбе, а там компы очень тормозят, пришлось массив выводить в listbox. вот что получилось:
Private Sub CommandButton1_Click()
Dim b(1 To 13) As Double, i As Integer
Dim k, s As Double
s = 1
k = 0
ListBox1.Clear
p = 3.14159265
b(1) = 1
For i = 2 To 13
b(i) = Cos((p * b(i - 1)) / 2)
ListBox1.AddItem (Format(b(i), "0.00000000000"))
If b(i) > 0 Then
s = s + b(i)
End If
If b(i) = 0 Then
k = k + 1
End If
TextBox1.Value = (Format(s, "0.00000000000"))
TextBox2.Value = k
Next i
End Sub

ещё долго не понимала, почему не считает нулевые элементы. потом дошло. вроде бы по формуле есть нули, т.к. соs пи/2 равен нулю. но мы вводили пи=p = 3.14159265, а косинус всего этого 0.00000000179. вот так вот))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.