Translate

martes, 3 de diciembre de 2013

Vectores:estadística(moda) en Visual Basic 2010


En estadística, la moda es el valor con una mayor frecuencia en una distribución de datos.

Esta aplicación es una herramienta básica para la forma de calcular la moda, se caracteriza 
por escribir la cantidad de número y escribir la máxima cantidad y la mínima.

De igual forma describe el proceso de cada vuelta para el acomodo de los números, 
igualmente se muestra la lista ya ordenada.

Para realizar el ejemplo de la aplicación es necesario crear una interfaz como la siguiente:



















Al generar los datos que con anticipación ya se habían ingresados, se plasman en el listbox.


 Al botón generar se le agrega el siguiente código.
   'cantidad = InputBox("De cuantos elementos sera el vector")
        'ReDim numeros(cantidad - 1)

        'For i = 0 To cantidad - 1
        'numeros(i) = InputBox("Dame el elemento " & i)
        'Next

        LstNumeros.Items.Clear()
        LstProcesos.Items.Clear()
        ReDim numeros(Val(TxtCantidad.Text) - 1)
        Dim NumAleatorio As New Random

        For i = 0 To numeros.Length - 1
            numeros(i) = NumAleatorio.Next(Val(TxtMinimo.Text), Val(TxtMaximo.Text))
        Next


        For i = 0 To numeros.Length - 1
            LstNumeros.Items.Add(NumAleatorio.Next(Val(TxtMinimo.Text), Val(TxtMaximo.Text)))
        Next


Al botón ordenar se le agrega el siguiente código.
    Dim vueltas As Integer
        Dim comparaciones As Integer
        Dim puntero As Integer
        Dim aux As Integer = 0

        vueltas = LstNumeros.Items.Count - 1
        '*********************************
        For i As Integer = 1 To vueltas

            LstProcesos.Items.Add("**VUELTA " & i & "***********************")
            comparaciones = (numeros.Length) - i
            LstProcesos.Items.Add(FotoVector(LstNumeros))
            puntero = 0
            For j As Integer = 1 To comparaciones
                LstProcesos.Items.Add("   Comparacion " & j & ": SI " & LstNumeros.Items(puntero) & "> " & LstNumeros.Items(puntero + 1))
                If LstNumeros.Items(puntero) > LstNumeros.Items(puntero + 1) Then
                    LstProcesos.Items.Add("   Intercambiar " & LstNumeros.Items(puntero) & " con " & LstNumeros.Items(puntero + 1))
                    aux = LstNumeros.Items(puntero + 1)
                    LstNumeros.Items(puntero + 1) = LstNumeros.Items(puntero)
                    LstNumeros.Items(puntero) = aux
                End If
                LstProcesos.Items.Add(FotoVector(LstNumeros))
                puntero += 1
            Next
        Next

Al botón moda se le agrega el siguiente código.
'Este vector contendrá la lista de numeros diferentes que existan
        Dim Elementos() As Integer

        'Este vector contendrá el numero de veces que un numero este presente (El vector elementos y Conteo estan vinculados por la posicion)
        Dim Conteo() As Integer


        'Servirá para contar el numero de veces que existe un numero
        Dim cont As Integer = 0

        'Cuenta el numero de elementos distintos que hay en la lista
        Dim CantElementos As Integer = -1

        'Apunta al elemento que esta siendo contado
        Dim puntero As Integer = 0
        'Apunta al elemento a comparar con el elemento seleccionado

        Dim sig As Integer = 0

        'Mientras existan elementos para contar
        While sig <= LstNumeros.Items.Count - 1

            'SI el elemento a contar es igual al siguiente elemento
            If LstNumeros.Items(puntero) = LstNumeros.Items(sig) Then

                'Se cuenta el elemento
                cont = cont + 1
                'Se incrementa para comparar con el siguiente
                sig += 1
            Else

                'Si no son iguales, entonces son diferentes. por tanto se incrementa se deduce que se tiene un elemento nuevo
                CantElementos += 1

                'Se dimensiona al vector al nuevo tamaño
                ReDim Preserve Elementos(CantElementos)

                'Se guarda el numero apuntado
                Elementos(CantElementos) = LstNumeros.Items(puntero)


                ReDim Preserve Conteo(CantElementos)

                'Se guarda el numero de veces que el numero ocurre en el vector
                Conteo(CantElementos) = cont

                'MsgBox(LstNumeros.Items(puntero) & " " & cont)

                'Como el que sigue es un nuevo numero entonces
                'Se inicia el contador de ocurrencias
                cont = 0

                'Se mueve el puntero para que apunte a un numero distinto
                puntero = sig


            End If
        End While
        CantElementos += 1

        ReDim Preserve Elementos(CantElementos)

        Elementos(CantElementos) = LstNumeros.Items(puntero)
        ReDim Preserve Conteo(CantElementos)

        Conteo(CantElementos) = cont




        Dim N, C As String

        For i As Integer = 0 To CantElementos
            N = N & Elementos(i) & " "
            C = C & Conteo(i) & " "




        Next

        Dim mayor As Integer
        Dim POS As Integer

        mayor = Conteo(0)
        POS = 0

        For I As Integer = 1 To Conteo.Length - 1




            If Conteo(I) > mayor Then
                mayor = Conteo(I)
                POS = I

            End If

        Next
        MsgBox(" La moda es::  " & Elementos(POS))


Al botón salir el siguiente código:
Me.Close()





1 comentario: