Консультация № 109881
17.11.2007, 18:58
0.00 руб.
0 3 3
Извините за глупый для вас вопрос, но пожалуста, подскачите срочно как найти сумму нечётных элементов одномерного массива на VBA и подсчитать сумму всех отрицательных и нечётных элементов.


Приложение:
я думаю что так, но не получается For i = 1 To n If a(i) Mod 2 + 1 = 0 Then neсh = nech + a(i) Next i For i = 1 To n If a(i) < 0 Then ot = ot + a(i) Next inech_ot = nech + ot

Обсуждение

Неизвестный
17.11.2007, 22:30
общий
это ответ
Здравствуйте, Нещин Василий Фёдорович!
Использование функции в приложении вернет сумму нечетных чисел массива, второй аргумент указывает какие числа суммировать положительные или отрицательные.
i = sumCountOdd(Arr0(), False)


Приложение:
Function sumCountOdd(Arr() As String, bNegative As Boolean) Dim i%i = UBound(Arr)For i = 0 To UBound(Arr()) If Arr(i) > 0 Or bNegative = True Then If Not Arr(i) / 2 = Round(Arr(i) / 2) Then sumCountOdd = sumCountOdd + Arr(i) End If End IfNextEnd Function
Неизвестный
19.11.2007, 07:40
общий
это ответ
Здравствуйте, Нещин Василий Фёдорович!
Может добавить в for опцию step? (см. приложние) и если суммировать в разных циклах, то значения могут повторяться. Может надо получить сумму именно отрицательных нечётных элементов массива (тогда см. приложение часть 2)

Приложение:
1 частьnech = 0For i = 1 To n Step 2 neсh = nech + a(i)Next iot = 0For i = 1 To n If a(i) < 0 Then ot = ot + a(i)Next inech_ot = nech + ot2 частьnech_ot = 0For i = 1 To n step 2 If a(i) < 0 Then neсh_ot = nech_ot + a(i)Next i
Неизвестный
21.11.2007, 15:38
общий
это ответ
Здравствуйте, Нещин Василий Фёдорович!
Код в принципе написан верно. Но перед циклами не забудьте на всякий случай объявить переменные и обнулить:
Dim nech,ot,nech_ot As Integer
nech=0
ot=0
nech_ot=0

Иногда первоначально берется "мусор" и в сумме дает не тот результат (Н-р, у меня был 0).
Затем (если не сработает) закоментарьте цикл и заново (убедившись что на En) перепишите аккуратно код. У меня это сработало (хотя это не объяснимо, с моей точки зрения). Если не поможет могу высласть документ с этим кодом.
Форма ответа