2012-01-05 2 views
4

두 배의 배열에있는 요소의 하위 집합을 합하여 계산해야합니다. 간단한 예로서 10 개 요소의 배열을 고려vb6의 SUM 함수를 사용하여 배열의 요소 합계

각 원소의 일부 값이 할당 된
Dim Array(1 To 10) As Double 

. VB에서 처음 5 개의 요소를 더하는 함수가 있습니까? 분명히 이것은 루프를 사용하여 해결할 수 있지만 한 줄의 솔루션이 있습니까? 내 코드를 잘 보관하고 싶습니다. 나는 SUM을 사용하려했지만 성공하지 못했습니다.

감사합니다.

+0

vb6 또는 vb.net 중 어떤 것을 사용하고 있는지 지정할 수 있습니까? vb.net 및 프레임 워크 3.5의 경우 Linq를 사용하여 처음 5 개 항목을 '취한'후 합계 할 수 있습니다. – Aphelion

+0

방금 ​​게시물을 편집했습니다 : vb6을 사용하고 있습니다 – Wawel100

+0

코드를 재사용하는 것이 목적이라면 Take 메서드와 Sum 메서드를 구현하는 자체 메서드를 만들 수 있습니다. – Aphelion

답변

3

는 아니, 당신이 원하는 것을 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 

나는 이것을 확인, 그래서 오타보고 sytaz하지 않았다 유의하시기 바랍니다. 다음과 같이 사용할 수 있습니다 :

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 

당신은 당신이 용납 않을 경우 지정하는 다른 옵션 부울을 (무시) ​​범위를 벗어날 수있는 방법을 수정할 수 있습니다. 배열에 존재하는 것보다 더 많은 원소를 더하기를 요청하면 오류가 발생합니다.