Improve company productivity with a Business Account.Sign Up

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

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
Asked:
ayha1999
  • 6
  • 3
  • 3
  • +1
3 Solutions
 
YZlatCommented:
how does your input data come in? as a string, as an array? in a file?
0
 
YZlatCommented:
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
 
YZlatCommented:
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
Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
VoteyDiscipleCommented:
Maybe this is what you had in mind:


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


... though I suspect there is a more direct way of achieving that for any particular situatoin.
0
 
Mike TomlinsonMiddle 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
        Debug.Print(AddValue(10))
        Debug.Print(AddValue(5))
        Debug.Print(AddValue(0))
        Debug.Print(AddValue(25))
    End Sub

    Public Function AddValue(ByVal value As Integer) As Integer
        Static total As Integer = 0
        total = total + value
        Return total
    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
 
ayha1999Author 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
 
VoteyDiscipleCommented:
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
 
YZlatCommented:
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
 
Mike TomlinsonMiddle 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
 
Mike TomlinsonMiddle School Assistant TeacherCommented:
Hehe...guess I shoulda refreshed eh?  =)
0
 
YZlatCommented:
actually no, use this instead:

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
 
ayha1999Author Commented:
Hi,

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

ayha
0
 
YZlatCommented:
for datareader

i=0
while datreader.Read
   myarray(i)=datareader("myfield")
   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
 
ayha1999Author 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.

Join & Write a Comment

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

  • 6
  • 3
  • 3
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now