Hola gracias por responder
tengo este codigo que es un boton que calcula la mediana
Ahora bien el problema es que cuando se calcula en la mediana y su resultado pasa a un txtbox
y despues calculo la moda me surge ese error antes dicho. no puedo ejecutar los dos al mismo tiempo. el resultado de los calculos se impremen en diferentes textbox.
Estoy trabajando en visual basic.
Private Sub btnCalMediana_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalMediana.Click
Dim temporal As Double
Try
Dim valores() As String = listaElementos.Items.Cast(Of String).OrderBy(Function(s) CDec(s)).ToArray
If listaElementos.Items.Count Mod 2 = 1 Then 'impar
txtMediana.Text = (valores(CInt(Math.Floor(listaElementos.Items.Count / 2))))
Else 'par
txtMediana.Text = (((CDec(valores(listaElementos.Items.Count \ 2 - 1)) + CDec(valores(listaElementos.Items.Count \ 2))) / 2).ToString)
End If
Catch ex As Exception
MsgBox("No puede hacer eso")
End Try
'Ordena los elementos de menor a mayor en la lista
For elementos = 0 To listaElementos.Items.Count - 1
For ordenar = 0 To listaElementos.Items.Count - 2
If (listaElementos.Items.Item(ordenar) > listaElementos.Items.Item(elementos)) Then
temporal = listaElementos.Items.Item(ordenar)
listaElementos.Items.Item(ordenar) = listaElementos.Items.Item(elementos)
listaElementos.Items.Item(elementos) = temporal
End If
Next
Next
End Sub
y este es otro boton que calcula la moda
Private Sub btnCalModa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalModa.Click
Dim valores() As String = listaElementos.Items.Cast(Of String).OrderBy(Function(s) CDec(s)).ToArray
Dim concurrencias() As Integer = Array.ConvertAll(valores, Function(s1) valores.Count(Function(s2) s2 = s1))
Dim hecho As New List(Of String)
Dim salida As String = ""
For x As Integer = 0 To concurrencias.GetUpperBound(0)
If concurrencias(x) = concurrencias.Max AndAlso Not hecho.Contains(valores(x)) Then
hecho.Add(valores(x))
salida &= valores(x) & ", "
End If
Next
txtModa.Text = (String.Format("{0}{1}{2}", If(hecho.Count = 1, "", If(hecho.Count = 2, "Bimodal, ", "Multimodal, ")), Environment.NewLine, salida.TrimEnd(","c, " "c)))
End Sub
por si no me explico cuando calculo la media bien si calculo la moda me salta error
pero si calculo la moda primero y despues la mediana no me da error
aca la muestra
si calculo primero la moda y despues la mediana no causa error
Gracias de nuevo.
Pd: por lo que entiendo dice que tengo que convertir un double o string si no me equivoco pero no se como hacerlo.