'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...        es.geocities.com/jm00092
'
'______________________________________________________________________
'                        
'
'  PROGRAMA PARA CALCULAR LOS DIVISORES ENTEROS DE UN NUMERO
'
'
'                               <F5> PARA EMPEZAR
'
'
'_____________________________________________________________________________
'      FUNCIONAMIENTO DEL PROGRAMA:
'
'  DIVIDE EL NUMERO QUE SE PIDE ENTRE TODOS LOS NUMEROS DESDE EL 1 HASTA
'  LA MITAD DEL NUMERO PEDIDO Y SLO ESCRIBE EL RESULTADO SI:
'
'  ( RESULTADO ) - ( RESULTADO SIN DECIMALES ) = CERO
'  DESPUS ESCRIBE EL MISMO NUMERO PEDIDO PORQUE TAMBIEN ESTE ES UN DIVISOR
'
'  SI EL NUMERO QUE SE PIDE ES CERO SALE DEL PROGRAMA
'
'
'
DECLARE SUB OPERACIONES (num#, lin!, col!)
DECLARE SUB caja (lin1!, col1!, lin2!, col2!, papel!, marco!, fondo!, sombra!)
COLOR 4, 15: CLS

COLOR 15, 4: LOCATE 25, 1: PRINT "    ESCRIBE UN NUMERO ENTRE 1 Y 1000000          ESCRIBE 0 PARA SALIR             "
COLOR 7, 7: LOCATE 24, 1: PRINT SPACE$(80)
COLOR 7, 7: LOCATE 22, 1: PRINT SPACE$(80)
COLOR 15, 1: LOCATE 1, 1: PRINT "          PROGRAMA PARA CALCULAR LOS DIVISORES ENTEROS DE UN NUMERO             "
LOCATE 19, 30: COLOR 30, 9: PRINT "   --->   Programa hecho en RONDA   <---   "
OPERACIONES num#, lin, col

'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                      
SUB caja (lin1, col1, lin2, col2, papel, marco, fondo, sombra) STATIC

    COLOR marco, fondo
    ANCHO = col2 - col1 + 1

    LOCATE lin1, col1
    PRINT ""; STRING$(ANCHO - 2, ""); "";
    LOCATE lin1, col1 + ANCHO: COLOR sombra, papel: PRINT ""

    FOR a = lin1 + 1 TO lin2 - 1
        LOCATE a, col1
        COLOR marco, fondo: PRINT ""; SPACE$(ANCHO - 2); "";
         LOCATE a, col1 + ANCHO: COLOR sombra, papel: PRINT ""
    NEXT a

    LOCATE lin2, col1
    COLOR marco, fondo: PRINT ""; STRING$(ANCHO - 2, ""); "";
    LOCATE lin2, col1 + ANCHO: COLOR sombra, papel: PRINT ""
    LOCATE lin2 + 1, col1 + 1: COLOR sombra, papel:  PRINT STRING$(ANCHO, "")
END SUB

'
'   JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                      
SUB OPERACIONES (num#, lin, col)

caja 2, 36, 6, 78, 7, 1, 7, 7

DO
   COLOR 7, 7: LOCATE 4, 50: PRINT SPACE$(27)
   LOCATE 4, 40: COLOR 15, 4: INPUT "   NUMERO : ", num$
LOOP UNTIL VAL(num$) <= 1000000 AND VAL(num$) - FIX(VAL(num$)) = 0

num# = VAL(num$)

IF num# < 0 THEN : BEEP: CALL OPERACIONES(num#, lin, col)
IF num# > 1000000 THEN : : LOCATE 4, 52: COLOR 15, 15: PRINT SPACE$(6): BEEP: CALL OPERACIONES(num#, lin, col)
IF num$ = "0" THEN : LOCATE 19, 30: COLOR 30, 9: PRINT " --->  GRACIAS POR USAR EL PROGRAMA  <---  ": COLOR 15, 4: END
IF num# = 0 THEN : BEEP: CALL OPERACIONES(num#, lin, col)
FOR a = 3 TO 23
   LOCATE a, 1: COLOR 4, 15: PRINT SPACE$(80)
NEXT
caja 2, 36, 6, 78, 7, 4, 7, 7    '
LOCATE 4, 40: COLOR 30, 9: PRINT " > ESPERE < "
 
LOCATE 3, 3: COLOR 1, 15: PRINT "1"
PRIM = 0
lin = 4
col = 2

FOR a# = 2 TO num# / 2
   IF (num# / a#) - FIX(num# / a#) = 0 THEN : COLOR 1, 15: LOCATE lin, col: PRINT a#: PRIM = 1: lin = lin + 1

   IF CSRLIN = 22 THEN
      lin = 3
      col = col + 10
      LOCATE 3, 1
   END IF
NEXT
LOCATE lin, col: PRINT num#

IF PRIM = 0 THEN : LOCATE 19, 30: COLOR 30, 9: PRINT "  ---> Es un NUMERO PRIMO <---  "
OPERACIONES num#, lin, col
END SUB

