Использование функции SUM в vb6 для суммирования элементов в массиве - PullRequest
4 голосов
/ 05 января 2012

Мне нужно сложить по подмножеству элементов в массиве двойников. В качестве простого примера рассмотрим массив из 10 элементов:

  Dim Array(1 To 10) As Double 

, где каждому элементу было присвоено какое-то значение. Есть ли в VB функция, которая будет суммировать первые 5 элементов? Очевидно, что это можно решить с помощью цикла, но есть ли однострочное решение? Я хотел бы сохранить мой код в соответствии. Я пытался использовать SUM, но безуспешно.

Спасибо!

1 Ответ

3 голосов
/ 05 января 2012

Нет, в VB6 нет встроенной функции суммирования, которая делает то, что вы хотите, но вы можете написать ее легко:

Public Function SumRange(ByRef dblArray() As Double, Optional ByVal StartRange As Long = -1, Optional ByVal Length As Long = -1)

   '-1 on StartRange indicates start at low bound
   If StartRange = -1 Then
      StartRange = LBound(dblArray)
   End If

   '-1 on Length indicates to span all elements to the end of the array
   If Length = -1 Then
      Length = UBound(dblArray) - StartRange - 1
   End If

   Dim dTotal As Double
   Dim lNdx As Long

   For lNdx = StartRange To StartRange + Length - 1
      dTotal = dTotal + dblArray(lNdx)
   Next lNdx

   SumRange = dTotal

End Function

Обратите внимание, что я не проверял это, так что следите за опечатками. Может использоваться следующим образом:

dResult = SumRange(myArray) 'summ all

dResult = SumRange(myArray, 3) 'sum all starting at offset 3

dResult = SumRange(myArray, , 2) 'sum the the first 2 elements

dResult = SumRange(myArray, 2, 4) 'sum a range start at 2 and with length of 4

Вы можете изменить метод, чтобы использовать другое необязательное логическое значение, определяющее, будете ли вы допускать (игнорировать) выход за пределы. Прямо сейчас возникнет ошибка, если вы попросите суммировать больше элементов, чем существует в массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...