martes, 3 de diciembre de 2013

ESTADÍSTICA

En estadística se utilizan ecuaciones para determinar la media, mediana y la moda para hallar estas se requiere saber acerca de los métodos de ordenación, ya que en la mediana y la moda la posición importa. Para hallar cada una de ellas aquí se presenta el código  de cada una de ellas.

Este es el diseño del proyecto realizado.



Se utiliza el siguiente código:

Public Class frmMediaMedianaModa
    Dim numeros() As Integer 'agregamos un vector y no le ponemos tamaño xk es homogeneo
    Dim tamano As Integer   'agregamos una variable y le ponemos -1 xk no podemos ponerlo en cero

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim tamano As Integer ' guarda el tamano
        tamano = Val(Txttamano.Text) 'pide el tamaño del arreglo


        ReDim numeros(tamano)
        For b As Integer = 1 To tamano
            numeros(b) = InputBox("Introduce un valor numérico :", "Introducción de números")
            Lstnumeros.Items.Add(numeros(b)) ' lo manda a la lista
        Next


    End Sub

    Private Sub Estadistica_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        txtmdia.Enabled = False
        txtmediana.Enabled = False
        txtmoda.Enabled = False
        Lstnumeros.Enabled = False
    End Sub

    Private Sub btnresultado_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnresul.Click
        Dim media As Double = 0.0 ' guarda la media
        Dim total As Double ' guarda el total de la suma
        For i As Integer = 0 To Lstnumeros.Items.Count
            total = total + numeros(i)

        Next

        media = total / Lstnumeros.Items.Count
        txtmdia.Text = media

        Dim vueltas As Integer = 0
        Dim comparaciones As Integer = 0
        Dim puntero As Integer = 1
        Dim aux As Integer = 0


        vueltas = Lstnumeros.Items.Count - 1 'controla el numero de vueltas que dará el método de inserción


        For i As Integer = 1 To vueltas ' determina el numero de comparaciones por cada vueltas
            comparaciones = i 'espara disminuir las vueltas
            puntero = i
            'se explica los pasos


            Dim cont As Integer = 1

            For j As Integer = comparaciones To 1 Step -1



                If Lstnumeros.Items(puntero) < Lstnumeros.Items(puntero - 1) Then 'se explica como se esta asiendo los paso



                    aux = Lstnumeros.Items(puntero - 1)
                    Lstnumeros.Items(puntero - 1) = Lstnumeros.Items(puntero)
                    Lstnumeros.Items(puntero) = aux


                End If
                puntero = puntero - 1

                cont += 1
            Next
            Dim posmedia As Double 'guarda la posicion
            Dim mediana As Double ' saca la media
            If Lstnumeros.Items.Count Mod 2 = 0 Then
                posmedia = Int(Lstnumeros.Items.Count / 2)
                mediana = (Lstnumeros.Items(posmedia) + Lstnumeros.Items(posmedia - 1)) / 2
                ' txtmediana.Text = mediana

            Else
                posmedia = Int(Lstnumeros.Items.Count / 2) + 1
                mediana = Lstnumeros.Items(posmedia - 1)

            End If
            txtmediana.Text = mediana
        Next
        '**************************************MODA****************************************************************
        '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 contador 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 punterom 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(punterom) = Lstnumeros.Items(sig) Then

                'Se cuenta el elemento
                contador = contador + 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(punterom)


                ReDim Preserve Conteo(CantElementos)

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

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

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

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


            End If
        End While
        CantElementos += 1

        ReDim Preserve Elementos(CantElementos)

        Elementos(CantElementos) = Lstnumeros.Items(punterom)
        ReDim Preserve Conteo(CantElementos)

        Conteo(CantElementos) = contador




        Dim N, C As String

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


        Next

        'MsgBox(N )

        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
        txtmoda.Text = Elementos(POS)



    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnlimpiar.Click
        Lstnumeros.Items.Clear()
        txtmdia.Clear()
        txtmediana.Clear()
        Txttamano.Clear()
        txtmoda.Clear()
    End Sub


End Class


En este link podrá encontrar el proyecto ya funcional.




No hay comentarios:

Publicar un comentario