'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...        es.geocities.com/jm00092
'
'______________________________________________________________________
'           
DECLARE SUB datos (crc$, censo!, esc!, ngr!, nombre$(), votos!(), blancos!, nulos!)
DECLARE SUB acta (crc$, censo!, esc!, votos!(), blancos!, nulos!, emi!)
DECLARE SUB asignar (votos!(), ngr!, esc!, nesc!())
DECLARE SUB ordenar (nombre$(), votos!(), nesc!(), ngr!)
DECLARE SUB resultados (nombre$(), votos!(), nesc!(), emi!, censo!, ngr!)
DIM nombre$(1 TO 15)
DIM votos(1 TO 15)
DIM nesc(1 TO 15)
datos crc$, censo, esc, ngr, nombre$(), votos(), blancos, nulos
acta (crc$), (censo), (esc), votos(), (blancos), (nulos), emi
asignar votos(), (ngr), (esc), nesc()
ordenar nombre$(), votos(), nesc(), (ngr)
DO: LOOP WHILE INKEY$ = ""
resultados nombre$(), votos(), nesc(), (emi), (censo), (ngr)

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'           
SUB acta (crc$, censo, esc, votos(), blancos, nulos, emi)
   COLOR 1, 7: CLS
   LOCATE 2, 34: PRINT "ACTA ELECTORAL"
   LOCATE 4, 34 - LEN(crc$): PRINT "Circuscripci¢n de "; crc$
   LOCATE 8, 5: PRINT "Censo:"; censo, , "Esca¤os:"; esc
   emi = blancos + nulos
   FOR n = 1 TO 15
      emi = emi + votos(n)
   NEXT
   LOCATE 14, 5: PRINT "Votos emitidos:"; emi, (100 * emi) / censo; "% sobre el censo"
   LOCATE 15, 5: PRINT "Abstenciones:"; censo - emi, (100 * (censo - emi)) / censo; "% sobre el censo"
   LOCATE 16, 5: PRINT "Votos v lidos:"; emi - blancos - nulos, (100 * (emi - blancos - nulos)) / emi; "% sobre los emitidos"
   LOCATE 17, 5: PRINT "Votos en blanco:"; blancos, (100 * blancos) / emi; "% sobre los emitidos"
   LOCATE 18, 5: PRINT "Votos nulos:"; nulos, (100 * nulos) / emi; "% sobre los emitidos"
END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'           
SUB asignar (votos(), ngr, esc, nesc())
   DIM mat(1 TO ngr, 1 TO esc)
   COLOR 8: LOCATE 22, 19: PRINT "Haciendo el reparto de esca¤os: 0 de"; esc
   FOR g = 1 TO ngr
      FOR e = 1 TO esc
         mat(g, e) = votos(g) / e
      NEXT
   NEXT
   FOR n = 1 TO esc
      max = mat(1, 1)
      aquiv = 1
      aquih = 1
      FOR g = 1 TO ngr
         FOR e = 1 TO esc
            IF mat(g, e) > max THEN
               max = mat(g, e)
               aquiv = g
               aquih = e
            END IF
         NEXT
      NEXT
      mat(aquiv, aquih) = 0
      nesc(aquiv) = nesc(aquiv) + 1
      LOCATE 22, 50: PRINT n; "de"; esc
   NEXT
   LOCATE 22, 10: PRINT "Pulsa cualquier tecla para ver la distribuci¢n de esca¤os..."
END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'           
SUB datos (crc$, censo, esc, ngr, nombre$(), votos(), blancos, nulos)
   COLOR 1, 7: CLS
   LOCATE 2, 5: LINE INPUT "Nombre de la circuscripci¢n: ", crc$
   DO
      LOCATE 3, 5: PRINT SPACE$(75)
      LOCATE 3, 5: INPUT "Censo electoral: ", censo
   LOOP UNTIL censo > 0
   DO
      LOCATE 4, 5: PRINT SPACE$(75)
      LOCATE 4, 5: INPUT "N£mero de esca¤os a repartir (1 a 255): ", esc
   LOOP UNTIL esc >= 1 AND esc <= 255
   DO
      LOCATE 5, 5: PRINT SPACE$(75)
      LOCATE 5, 5: INPUT "N£mero de grupos presentados (2 a 15): ", ngr
   LOOP UNTIL ngr >= 2 AND ngr <= 15
   COLOR 8: LOCATE 7, 5: PRINT "N§  Nombre              Votos"
   FOR n = 1 TO ngr
      LOCATE 7 + n, 4: PRINT n
   NEXT
   COLOR 1
   FOR n = 1 TO ngr
      LOCATE 7 + n, 10: LINE INPUT "", nombre$(n)
      LOCATE 7 + n, 30: INPUT "", votos(n)
   NEXT
   LOCATE ngr + 9, 5: INPUT ; "Votos en blanco: ", blancos
   LOCATE ngr + 9, 40: INPUT ; "Votos nulos: ", nulos
END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'           
SUB ordenar (nombre$(), votos(), nesc(), ngr)
   d = ngr
   WHILE d <> 1
      d = INT(d / 2)
      sw = 1
      WHILE sw = 1
         sw = 0
         FOR i = 1 TO (ngr - d)
            IF votos(i) < votos(i + d) THEN
               aux = votos(i)
               votos(i) = votos(i + d)
               votos(i + d) = aux
               aux = nesc(i)
               nesc(i) = nesc(i + d)
               nesc(i + d) = aux
               au$ = nombre$(i)
               nombre$(i) = nombre$(i + d)
               nombre$(i + d) = au$
               sw = 1
            END IF
         NEXT
      WEND
   WEND
END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'           
SUB resultados (nombre$(), votos(), nesc(), emi, censo, ngr)
   COLOR 1, 7: CLS
   LOCATE 6, 5: PRINT "Grupo                Votos     % Censo     % Emitidos     Esca¤os"
   FOR n = 1 TO ngr
      LOCATE 7 + n, 5: PRINT nombre$(n)
      LOCATE 7 + n, 25: PRINT votos(n)
      LOCATE 7 + n, 35: PRINT (100 * votos(n)) / censo; "%"
      LOCATE 7 + n, 47: PRINT (100 * votos(n)) / emi; "%"
      LOCATE 7 + n, 62: PRINT nesc(n)
   NEXT
END SUB

