Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Calcular mediana

Estas en el tema de Calcular mediana en el foro de Visual Basic clásico en Foros del Web. Quería saber si hay alguna función sencilla para calcular la mediana de tres números, en donde cogería tres datos y me quedaría siempre con el ...
  #1 (permalink)  
Antiguo 17/07/2008, 04:49
 
Fecha de Ingreso: abril-2003
Mensajes: 11
Antigüedad: 21 años
Puntos: 0
Calcular mediana

Quería saber si hay alguna función sencilla para calcular la mediana de tres números, en donde cogería tres datos y me quedaría siempre con el del medio.

gracias.
  #2 (permalink)  
Antiguo 17/07/2008, 06:30
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Calcular mediana

No entendí muy bien, supongo que quieres saber cuál de los 3 valores está en el medio. Solo usa varios If usando los comparadores (menor) < (mayor), (mayor) > (menor), (igual) = (igual) y obtendrás el resultado.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 17/07/2008, 06:34
Avatar de Jhonnyf  
Fecha de Ingreso: septiembre-2007
Ubicación: Dentro de mi
Mensajes: 87
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: Calcular mediana

La media es tambien llamado "Promedio"

asi que suma los 3 numeros y dividelo entre 3

(X + Y + Z)/3
  #4 (permalink)  
Antiguo 17/07/2008, 06:36
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Calcular mediana

Sí, al principio eso se me ocurrió Jhonnyf. Pero si te fijas en el mensaje, dice:
Cita:
en donde cogería tres datos y me quedaría siempre con el del medio
Lo cual me confundió...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 17/07/2008, 06:55
Avatar de Jhonnyf  
Fecha de Ingreso: septiembre-2007
Ubicación: Dentro de mi
Mensajes: 87
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: Calcular mediana

Cita:
Iniciado por David el Grande Ver Mensaje
Sí, al principio eso se me ocurrió Jhonnyf. Pero si te fijas en el mensaje, dice:
Cita:
en donde cogería tres datos y me quedaría siempre con el del medio
Lo cual me confundió...
medio extraño lo que pide....

si es asi, pues lees el primero, lo descartas,
luego el segundo y lo guardas
y el tercero y lo vuelves a descartar..

Ni idea del porque.... ya estoy confundico como David el Grande
  #6 (permalink)  
Antiguo 17/07/2008, 14:53
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 10 meses
Puntos: 7
Pregunta Respuesta: Calcular mediana

Hola!

¿Tal vez te refieres a la mediana estadística, y no a la media aritmética? La mediana es un poco compleja de explicar, y me gustaría tener un ratito para implementar un ejemplo, pero no se si tiene sentido para sólo tres valores... sólo me se la teoría, y tampoco estoy muy ducho, la verdad

¿O tal vez te refieres a devolver, de tres valores, el que no es el mayor ni el menor? Por ejemplo, de la serie (5, 15, 20), quedarte con el 15 y de (150, 2, 10), quedarte con el 10.

Última edición por Txoco; 18/07/2008 a las 04:53 Razón: "quedarte con el 150... =/"
  #7 (permalink)  
Antiguo 18/07/2008, 04:00
 
Fecha de Ingreso: abril-2003
Mensajes: 11
Antigüedad: 21 años
Puntos: 0
Respuesta: Calcular mediana

Gracias por vuestras respuestas. No estoy muy puesto en estadística y no se si sería la mediana estadística o aritmética.

En mi programa, tengo que obtener un datos que sería la temperatura de varios sensores de temperatura, pero el problema es que a veces hay un error de lectura que está un poco desfasado y quería corregirlo en el código.

Yo lo que quiero es hacer tres lecturas y quedarme con dato que tenga el valor medio. No sería hacer la media de esos datos.

Ej: (25,5,26) -> Cogería 25
(5,26,22) -> 22
(22,24,28) ->24

Sería ordenarlos y elegir el valor medio. En excell hay una funcion que es =MEDIANA(valores) y no se si en visual hay algo similar.

Muchas gracias.
  #8 (permalink)  
Antiguo 18/07/2008, 05:27
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: Calcular mediana

La función "MEDIANA()" de Excel sí se refiere a la mediana estadística, que parece que sí es lo que estás buscando. Lo que pasa es que la mediana es un cálculo complejo que depende de si el número de valores en la serie es par o impar.

Si sólo vas a trabajar con series de tres valores, no se hasta qué punto es aconsejable ordenarlos para seguir el algoritmo de la mediana... casi es más gasto de procesador que si los comparas a palo seco. Esto que te propongo es una estrategia de programación que se llama "loop unrolling" (algo así como "desenrrollar bucles"), que sirve para optimizar puntos críticos de velocidad, porque las estructuras de bucle son más pesadas que las comparaciones.

Hasta donde yo se, VB no tiene funciones estadísticas de forma nativa, así que este código que te sugiero te sirve única y exclusivamente para tres valores. Para cuatro se complica, pero puede hacerse. Para cinco probablemente el gasto empiece a dejar de ser comparable con el de los bucles. Y si el número de valores puede variar, esta función no te sirve en absoluto:

Código:
Public Function ValorMedio(ByVal a As Long, ByVal b As Long, ByVal c As Long) As Long
    If a > b Then
        If a > c Then
            If b > c Then
                ValorMedio = b
            Else
                ValorMedio = c
            End If
        Else
            ValorMedio = a
        End If
    Else
        If a > c Then
            ValorMedio = a
        Else
            If b > c Then
                ValorMedio = c
            Else
                ValorMedio = b
            End If
        End If
    End If
End Function
Eso sí, que no se te ocurra presentar algo así en un trabajo académico... por lo general a los profesores no les gustan estas cosas aunque sí se hagan al optimizar los proyectos
__________________
wile sona li mute e sona
  #9 (permalink)  
Antiguo 18/07/2008, 07:34
Avatar de Jhonnyf  
Fecha de Ingreso: septiembre-2007
Ubicación: Dentro de mi
Mensajes: 87
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: Calcular mediana

Aqui un Algoritmo haciendo lo que pides (Ordenar y sacar el Valor intermedio) usando el Algoritmo Burbuja
Código:
Private Function ValorIntermedio(a As Long, b As Long, c As Long) As Long
Dim i As Integer, j As Integer
Dim Ordenado(3) As Long 'le dos 1 más para que sirva como temporal
'asiganamos los valores dador
Ordenado(0) = a
Ordenado(1) = b
Ordenado(2) = c

'Hacemos el Algoritmo de Ordenamiento Burbuja
    For i = 0 To 2
        For j = i + 1 To 2
        If Ordenado(i) > Ordenado(j) Then
            Ordenado(3) = Ordenado(j)
            Ordenado(j) = Ordenado(i)
            Ordenado(i) = Ordenado(3)
        End If
        Next
    Next
'Devolvemos el valor intermedio, en este caso el Index 1
    ValorIntermedio = Ordenado(1)
End Function
__________________
*en construccion*

Última edición por Jhonnyf; 18/07/2008 a las 08:14
  #10 (permalink)  
Antiguo 21/07/2008, 02:30
 
Fecha de Ingreso: abril-2003
Mensajes: 11
Antigüedad: 21 años
Puntos: 0
Respuesta: Calcular mediana

Ok, muchas gracias por las respuestas. Necesito recoger 18 datos, y en cada dato hacer tres muestras. Probaré con estos códigos a ver como me va el programa, pq lo usaré en un portátil muy viejo. gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:02.