D.A.I (Trassierra, Córdoba)
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

D.A.I (Trassierra, Córdoba)

D.A.I (Trassierra, Córdoba)
 
ÍndiceÍndice  Últimas imágenesÚltimas imágenes  BuscarBuscar  RegistrarseRegistrarse  ConectarseConectarse  

 

 Resolución ejercicio Ley D´Hont

Ir abajo 
2 participantes
AutorMensaje
Admin
Admin
Admin



Cantidad de envíos : 40
Fecha de inscripción : 24/10/2008

Resolución ejercicio Ley D´Hont Empty
MensajeTema: Resolución ejercicio Ley D´Hont   Resolución ejercicio Ley D´Hont Icon_minitimeMar Oct 06, 2009 10:48 am

Mi particular visión sobre el ejercicio de la ley D´Hont
Empieza la ronda de preguntas

Código:

Imports System.Math
Module Module1
    Structure resultados
        Dim votos As Single
        Dim nombre As String

        Dim porcentaje As Single
        Dim escaños As Integer
    End Structure
    Sub Main()
        Dim elec() As resultados
        Dim escaños As Integer

        'introducimos numero escaños
        introescaños(escaños)

        'La función introduce los datos en el array
        introdatos(elec)

        'Calculamos porcentaje
        porcentaje(elec)

        'Ordenamos según numero de votos
        ordena(elec)

        'Aplicamos ley D'hont
        aplica(elec, escaños)

        'Muestra los datos
        muestra(elec)
    End Sub
    Sub introdatos(ByRef elec() As resultados)
        Dim temporal As String
        Dim contador As Integer = 0
        Do
            Console.Clear()
            Console.WriteLine("Introduzca el nombre del partido")
            temporal = Console.ReadLine()
            If (temporal <> "") Then


                ReDim Preserve elec(contador)
                elec(contador).nombre = temporal
                Console.WriteLine("Introduzca el numero de votos")
                elec(contador).votos = Console.ReadLine()
                contador += 1
            End If
        Loop Until temporal = ""
    End Sub
    Sub muestra(ByRef elec() As resultados)
        Dim color As Boolean = True

        For Each dato In elec
         
            Console.WriteLine("----------------------------------")
            Console.WriteLine("El nombre: " & dato.nombre)
            Console.WriteLine("Numero de votos: " & dato.votos)
            Console.WriteLine("Porcentaje: " & dato.porcentaje)
            Console.WriteLine("Escaños: " & dato.escaños)
            Console.WriteLine("")

        Next
        Console.ResetColor()

        Console.ReadKey()
    End Sub
    Sub porcentaje(ByRef elec() As resultados)
        Dim sumatorio As Integer = 0

        For Each dato In elec
            sumatorio += dato.votos
        Next
        For i As Integer = 0 To elec.GetUpperBound(0)
            elec(i).porcentaje = (elec(i).votos / sumatorio) * 100
        Next
    End Sub
    Sub ordena(ByRef elec() As resultados)
        Dim flag As Boolean = False
        Dim aux As resultados

        Do
            flag = False
            For i As Integer = 0 To elec.GetUpperBound(0) - 1

                If (elec(i).votos < elec(i + 1).votos) Then
                    aux = elec(i)
                    elec(i) = elec(i + 1)
                    elec(i + 1) = aux
                    flag = True
                End If
            Next
        Loop While flag
    End Sub
    Sub introescaños(ByRef escaños As Integer)
        Console.WriteLine("Introduzca numero de escaños a repartir")
        escaños = Console.ReadLine()

    End Sub
    Sub aplica(ByRef elec() As resultados, ByVal escaños As Integer)
        Dim cuentan As Integer = 0
        Dim mayor(1) As Integer
        'Contamos numero partidos con porcentaje mayor o igual a 3
        For Each elemento In elec
            If (elemento.porcentaje >= 3) Then cuentan += 1
        Next
        'Creamos una tabla con las siguientes dimensiones:
        'Filas: numero de partidos validos
        'Columnas: numero escaños
        Dim matriz(cuentan - 1, escaños - 1) As Single
        For i As Integer = 0 To matriz.GetUpperBound(0)
            For e As Integer = 0 To matriz.GetUpperBound(1)
                matriz(i, e) = Math.Round(elec(i).votos / (e + 1), 2)
            Next
        Next

        For i As Integer = 0 To escaños - 1
            For a As Integer = 0 To matriz.GetUpperBound(0)
                For b As Integer = 0 To matriz.GetUpperBound(1)
                    If (a = 0) And (b = 0) Then
                        mayor(0) = a : mayor(1) = b
                    ElseIf matriz(mayor(0), mayor(1)) < matriz(a, b) Then
                        mayor(0) = a : mayor(1) = b
                    End If
                Next
            Next
            matriz(mayor(0), mayor(1)) *= -1

        Next
        For i As Integer = 0 To matriz.GetUpperBound(0)
            For e As Integer = 0 To matriz.GetUpperBound(1)
                Console.Write(matriz(i, e) & vbTab)
                If (matriz(i, e) < 0) Then elec(i).escaños += 1
            Next
            Console.WriteLine("")
        Next




        Console.ReadKey()
    End Sub
End Module


PD: Este es el posdata pertinente y correspondiente, en acuerdo a Edu


Última edición por Admin el Miér Oct 07, 2009 1:51 pm, editado 1 vez
Volver arriba Ir abajo
https://daitrassierra.foroes.org
Edu
Grado2(EDVAC)
Grado2(EDVAC)
Edu


Cantidad de envíos : 82
Fecha de inscripción : 30/10/2008

Resolución ejercicio Ley D´Hont Empty
MensajeTema: Re: Resolución ejercicio Ley D´Hont   Resolución ejercicio Ley D´Hont Icon_minitimeMar Oct 06, 2009 10:37 pm

Sólamente objetar que Admin no ha puesto su particular posdata Razz
Volver arriba Ir abajo
Edu
Grado2(EDVAC)
Grado2(EDVAC)
Edu


Cantidad de envíos : 82
Fecha de inscripción : 30/10/2008

Resolución ejercicio Ley D´Hont Empty
MensajeTema: Re: Resolución ejercicio Ley D´Hont   Resolución ejercicio Ley D´Hont Icon_minitimeJue Oct 08, 2009 5:13 pm

Admin, me refería a posdata del estilo de "Aguilera Power con cariño" o similar xDD
Volver arriba Ir abajo
Contenido patrocinado





Resolución ejercicio Ley D´Hont Empty
MensajeTema: Re: Resolución ejercicio Ley D´Hont   Resolución ejercicio Ley D´Hont Icon_minitime

Volver arriba Ir abajo
 
Resolución ejercicio Ley D´Hont
Volver arriba 
Página 1 de 1.
 Temas similares
-
» Ejercicio nº 15 en C.
» Ejercicio 4
» Ejercicio 15, por admin
» Ejercicio 10 en pseudocodigo
» Relacion de ejercicios de PMUL

Permisos de este foro:No puedes responder a temas en este foro.
D.A.I (Trassierra, Córdoba) :: VISUAL BASIC-
Cambiar a:  
Ante la inminente, lenta, cercana e inexorable finalización de su vida útil. Propongo la plataforma: !Salvemos al foro! Salvando el foro estás contribuyendo en la lucha del cambio climático, en la reproducción del lince ibérico, salvas la amazonia y con cada visita estás alimentando a un pobre informático:

!Por un foro DAI para nuestros hijos!
Le quedan 20 dias al foro, !actúa!

Get your own Chat Box! Go Large!
Situación actual en cordoba aeropuerto

Free counter and web stats
Crear un foro gratis | ©phpBB | Foro gratis de asistencia | Denunciar un abuso | ForoActivo.com