x
• Status: Solved
• Priority: Medium
• Security: Public
• Views: 137

# function

Hi,

How can I create an function to return the following result

orginal data     result
10                   10    <---- first value
5                     15   <---- first value + second value
0                     15   <--- first + second + third value
25                   40   <--- first + second + third + fouth and so on

ayha
0
ayha1999
• 6
• 3
• 3
• +1
3 Solutions

Commented:
how does your input data come in? as a string, as an array? in a file?
0

Commented:
this solution is for an array:

Function Summation(ByVal arr as Integer) As Integer
Dim result As Integer
For i As Integer = 0 To arr.length - 1
result = result + arr(i)
Next
return result
End Function
0

Commented:
sorry, should be

Function Summation(ByVal arr() as Integer) As Integer
Dim result As Integer
For i As Integer = 0 To arr.length - 1
result = result + arr(i)
Next
return result
End Function
0

Commented:
Maybe this is what you had in mind:

Function RunningSum(ByVal x As Integer) As Integer
Static total As Integer = 0
total +=x
End Function

... though I suspect there is a more direct way of achieving that for any particular situatoin.
0

Middle School Assistant TeacherCommented:
Use a static variable:

Public Class FormC

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
End Sub

Public Function AddValue(ByVal value As Integer) As Integer
Static total As Integer = 0
total = total + value
End Function

End Class

Though it would probably be better to encapsulate this in a class so you can store the invdivual variables and optionally reset the total...
0

Author Commented:
Hi,

YZlat's solution seems to be what I am looking but the the result should also return in an array becasue the result will not be a single value. which should look like ;

orginal data     result
10                   10    <---- first value
5                     15   <---- first value + second value
0                     15   <--- first + second + third value
25                   40   <--- first + second + third + fouth and so on

ayha
0

Commented:
What threw us off is that kind of notation is often used to express what the result of sending particular single inputs to the function should be.  "Send in 10, get out 10.  Send in 5, get out 15.  Et cetera."

Interpreting it as an array means that a simple modification to YZlat's solution is all that's needed:

Protected Function Summation(ByVal arr As Integer) As Integer()
Dim result As Integer(arr.Length - 1)
Dim sum As Integer = 0

For i As Integer = 0 To arr.length - 1
sum += arr(i)
result(i) = sum
Next
Return result
End Function
0

Commented:
try something like that:

Function Summation(ByVal arr() as Integer) As Integer()
Dim result() As Integer
Dim subtotal as integer
For i As Integer = 0 To arr.length - 1
result(i)=subtotal
subtotal = subtotal + arr(i)
Next
return result
End Function

0

Middle School Assistant TeacherCommented:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim values() As Integer = {10, 5, 0, 25}
Dim totals() As Integer = AddValues(values)
For Each total As Integer In totals
Debug.WriteLine(total)
Next
End Sub

Public Function AddValues(ByVal arr() As Integer) As Integer()
Dim total As Integer
Dim retArr(arr.Length - 1) As Integer
For i As Integer = 0 To arr.GetUpperBound(0)
total = total + arr(i)
retArr(i) = total
Next
Return retArr
End Function
0

Middle School Assistant TeacherCommented:
Hehe...guess I shoulda refreshed eh?  =)
0

Commented:

Function Summation(ByVal arr() As Integer) As Integer()
Dim result(arr.Length - 1) As Integer
Dim subtotal As Integer
For i As Integer = 0 To arr.length - 1

subtotal = subtotal + arr(i)
result(i) = subtotal
Next
Return result
End Function
0

Author Commented:
Hi,

thanks. all of your solution works. how can I provide data to the array from datareader or dataset?

ayha
0

Commented:

i=0
i+=1

end while

or for dataset

For i=0 to DataSet1.Tables(0).Rows.COunt-1
myarray(i)=DataSet1.Tables(0).Rows(i).Item("myfield")
Next
0

Author Commented:
Thanks for all of your help.

ayha
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.