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.
Código
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
Código
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.