IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> ПОмогите пожалуйста с VBA с массивами, очень прошу вас о помощи
_Victori_
сообщение 2.3.2011, 19:41
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 2
Регистрация: 2.3.2011
Город: Урюпинск



вот такое у меня задание-сформировать элементы массива 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

я уже вообще полностью запуталась, помогите пжлст)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Евгений М.
сообщение 3.3.2011, 4:46
Сообщение #2


Студент
**

Группа: Продвинутые
Сообщений: 199
Регистрация: 6.11.2009
Город: Уфа
Вы: студент



У Вас первый элемент массива имеет индекс 1.
В первом шаге цикла производится попытка обратится к элементу с индексом 0.

Вообщем сделайте следующее:
1. Уберите "b(i) = Cells(1 + i, 2)"
2. Выносите "b(1) = 1" из цикла
3. Начальное значение s должно равнятся b(1)
4. Цикл начинайте с 2, вместо 1
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
_Victori_
сообщение 4.3.2011, 14:51
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 2
Регистрация: 2.3.2011
Город: Урюпинск



всё переделала) т.к. мы делаем на учёбе, а там компы очень тормозят, пришлось массив выводить в 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. вот так вот))
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 25.5.2025, 19:31

Книжки в помощь: "Сборник заданий по высшей математике" Кузнецов Л.А., "Сборник заданий по высшей математике" Чудесенко В.Ф., "Индивидуальные задания по высшей математике" Рябушко А.П., и другие.




Зеркало сайта Решебник.Ру - reshebnik.org.ru