Solved

# Array Median As Double

Posted on 2016-10-02
40 Views
I have a randomly generated array of integers between 1 and 100, and the array's length is between 5 and 10. The array is sorted in ascending order.

I am trying to determine how I would calculate the median. Part of the criteria is to "declare the median as a double." My current work uses an If...Else loop to get the median, but the median is not declared. I realize I have to start over, but I am unsure where even to begin.
0
Question by:Marie Hester
• 2
• 2

LVL 63

Expert Comment

ID: 41825722
Please post the code you have come up with as a starting point.
1

Author Comment

ID: 41825740
I wound up removing the loop all together, but now the median is not calculating correctly.

``````Dim rnd As New Random()
Dim randArray(10) As Integer

For n As Integer = 5 To 10
randArray(n) = rnd.Next(1, 100)

Next

Array.Sort(randArray)

For n As Integer = 5 To 10
txtOutput.AppendText(randArray(n).ToString + Space(4))
Next

Dim num1 As Double = randArray(randArray.Length \ 2)
Dim num2 As Double= randArray((randArray.Length \ 2) - 1)
Dim median As Double = (num1 + num2) \ 2
lblMedian.Text = (median.ToString)
``````

Before the loop I had was similar to this:

If (ubound(array) mod 2) = 0 Then

' odd number of items
median = array(ubound(array) \ 2)

Else

' even number of items
median = (array(ubound(array) \ 2) + array(1 + ubound(array) \ 2)) / 2
0

LVL 63

Accepted Solution

Fernando Soto earned 500 total points
ID: 41825791
Hi Marie;

``````'' This value is 1 less then the number of values wanted, arrays are zero based
Dim numberOfValues As Integer = 9
Dim rnd As New Random()
'' This array had 11 elements in it, index is zero based
'' An index of 9 gives 10 elements 0 - 9
Dim randArray(numberOfValues - 1) As Integer

'' When I read this, "and the array's length is between 5 and 10.",
'' Now this For loop, "For n As Integer = 5 To 10", only uses the last 6
'' elements of the array leaving elements 0 - 4 empty. Is the statement looking to handle
'' any number of integers between 5 and 10 numbers. The modified For loop will always
'' load all elements of the array.
For n As Integer = 0 To (numberOfValues - 1)
randArray(n) = rnd.Next(1, 100)
Next

Array.Sort(randArray)

'' Modified For loop to match the number of elements in the array
'' Clear the text from last execution of this code
txtOutput.Clear()
lblMedian.Text = ""
For n As Integer = 0 To (numberOfValues - 1)
txtOutput.AppendText(randArray(n).ToString + Space(4))
Next

'' Using Integer Division
Dim num1 As Integer = (randArray.Length \ 2) - 1
Dim num2 As Integer = num1 + 1
Dim median As Double = 0.0

'' Test to see if the number of elements is even or odd
If numberOfValues Mod 2 = 0 Then
'' Is Even
median = (randArray(num1) + randArray(num2)) / 2
Else
'' Is Odd
median = randArray(num2)
End If

lblMedian.Text = (median.ToString)
``````
1

Author Closing Comment

ID: 41825795
Thank you so much for your assistance.

Your comments were extremely helpful. I realize now where I was going wrong and why I wasn't getting the desired results.
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article explains how to create and use a custom WaterMark textbox class.  The custom WaterMark textbox class allows you to set the WaterMark Background Color and WaterMark text at design time.   IMAGE OF WATERMARKS STEPS Create VB …
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…