Problema con instruccion

Iniciado por nolasco281, 7 Mayo 2014, 13:51 PM

0 Miembros y 1 Visitante están viendo este tema.

nolasco281

Hola como estan

disculpen las molestias

El problema que tengo es con la siquiente instruccion

Código (vb) [Seleccionar]
Dim valores() As String = listaElementos.Items.Cast(Of String).OrderBy(Function(s) CDec(s)).ToArray

el error dice

Código (vb) [Seleccionar]
Unable to cast object of type 'System.Double' to type 'System.String'.

gracias saludos

Lo que se puede imaginar... se puede programar.

NikNitro!

En que lenguaje? Podrías dar más code para el contexto? (No siempre un error está en la misma línea). Qué piensas que debería hacer esa línea?

Y por último... Te ha dado por leer el error?

Saludos ;)

nolasco281

#2
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.


Código (vbnet) [Seleccionar]
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 (vbnet) [Seleccionar]
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.
Lo que se puede imaginar... se puede programar.