Solved

Array Median As Double

Posted on 2016-10-02
4
18 Views
Last Modified: 2016-10-02
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
Comment
Question by:Marie Hester
  • 2
  • 2
4 Comments
 
LVL 62

Expert Comment

by:Fernando Soto
Comment Utility
Please post the code you have come up with as a starting point.
1
 

Author Comment

by:Marie Hester
Comment Utility
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) 

Open in new window


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 62

Accepted Solution

by:
Fernando Soto earned 500 total points
Comment Utility
Hi Marie;

I have modified your code and should be doing what you need. Please read the comments in the code.
'' 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)

Open in new window

1
 

Author Closing Comment

by:Marie Hester
Comment Utility
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

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Suggested Solutions

This tutorial demonstrates one way to create an application that runs without any Forms but still has a GUI presence via an Icon in the System Tray. The magic lies in Inheriting from the ApplicationContext Class and passing that to Application.Ru…
Creating an analog clock UserControl seems fairly straight forward.  It is, after all, essentially just a circle with several lines in it!  Two common approaches for rendering an analog clock typically involve either manually calculating points with…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now