(Batch) Verificador RUT [CODIGO HECHO]

Discussion in 'Programación & Programación Web' started by the_patox, Jan 18, 2011.

  1. the_patox

    the_patox Usuario Nuevo nvl. 1
    1/41

    Joined:
    May 31, 2010
    Messages:
    669
    Likes Received:
    1
    Un programa simple para calcular el ultimo digito del rut.

    Code:
    @echo off
    color a
    title Verificador RUT                         Th3_p4t0x
    :rv
    cls
    echo.
    echo Si el rut tiene 7 digitos sin verificador, agregue un espacio al principio.
    echo.
    
    ::Se define la variable "rut" que sufrira cambios en todo el proceso.
    set/p "rut=Ingrese el rut: "
    
    ::Cuando no se escribe nada el programa no se cierra.
    if not defined rut goto rv
    
    ::Se toma el rut de derecha a izquierda.
    set "ocho=%rut:~7%"
    set "siete=%rut:~6,-1%"
    set "seis=%rut:~5,-2%"
    set "cinco=%rut:~4,-3%"
    set "cuatro=%rut:~3,-4%"
    set "tres=%rut:~2,-5%"
    set "dos=%rut:~1,-6%"
    set "uno=%rut:~0,1%"
    
    ::Se multiplica cada digito por los numeros que componen la serie numerica 2,3,4,5,6,7.
    set/a ocho=ocho*2
    set/a siete=siete*3
    set/a seis=seis*4
    set/a cinco=cinco*5
    set/a cuatro=cuatro*6
    set/a tres=tres*7
    set/a dos=dos*2
    set/a uno=uno*3
    
    ::Se suma el resultado de los anteriores.
    set/a af=%ocho%+%siete%+%seis%+%cinco%+%cuatro%+%tres%+%dos%+%uno%
    
    ::Se aplica el modulo 11:
    
    ::Se divide por 11
    set/a div=%af%/11
    
    ::Y se determina el resto
    set/a res=%af%%%11
    
    ::A 11 se le resta el resto.
    set/a valid=11-%res%
    
    ::Si el resultado es 11 el verificador sera 0.
    if %valid%==11 set "valid=0"
    
    ::Si el resultado es 10 el verificador sera K.
    if %valid%==10 set "valid=K"
    
    ::Rut completo.
    echo.
    echo Su rut completo es %rut%-%valid%
    echo.
    pause
    goto rv
    
    Todo segun Wikipedia.
    Cualquier pregunta se hace por aqui :zippy1:

    Saludos
     
    #1 the_patox, Jan 18, 2011
    Last edited: Jan 18, 2011
  2. virox

    virox Usuario Casual nvl. 2
    87/163

    Joined:
    Jul 9, 2007
    Messages:
    9,206
    Likes Received:
    16
    Vale esta bueno.
    pero te recomiendo que al código le pongas comentarios... para los que no saben que hace. PAra que tu post tome mas fuerza y base aun.
     
  3. BecKer

    BecKer Usuario Casual nvl. 2
    37/41

    Joined:
    Sep 27, 2009
    Messages:
    2,628
    Likes Received:
    2
    jejjeje esta bueno
     
  4. BecKer

    BecKer Usuario Casual nvl. 2
    37/41

    Joined:
    Sep 27, 2009
    Messages:
    2,628
    Likes Received:
    2
    mejor borras el goto rv y pones exit mejor
     
  5. the_patox

    the_patox Usuario Nuevo nvl. 1
    17/41

    Joined:
    May 31, 2010
    Messages:
    669
    Likes Received:
    1
    Gracias por tu comentario, lo tomare en cuenta.

    Es por si se revisan varios, para no estar abriendo el programa a cada rato,
    gracias por el comentario
     
  6. the kamikase

    the kamikase Usuario Maestro nvl. 6 ★ ★ ★ ★
    697/812

    Joined:
    Sep 19, 2008
    Messages:
    68,365
    Likes Received:
    42
    gracias man !
     
  7. Maathy!

    Maathy! Usuario Maestro nvl. 6 ★ ★ ★ ★
    687/812

    Joined:
    Apr 25, 2009
    Messages:
    57,601
    Likes Received:
    2
    y ese mismo codigo en c# ?
     
  8. the_patox

    the_patox Usuario Nuevo nvl. 1
    17/41

    Joined:
    May 31, 2010
    Messages:
    669
    Likes Received:
    1
    todavia no tengo los conocimientos necesarios como para hacerlo en c#,
    pero este codigo puedes usarlo como ayuda para uno en C# y en cualquier otro,
    algo asi como diagrama de flujo, para saber como se comporta el programa
     
  9. zero_334

    zero_334 Usuario Nuevo nvl. 1
    1/41

    Joined:
    Jun 18, 2010
    Messages:
    8
    Likes Received:
    0
    lo probe y no fuk
     
  10. clyman

    clyman Usuario Nuevo nvl. 1
    6/41

    Joined:
    Sep 29, 2009
    Messages:
    74
    Likes Received:
    0
    bueeena, si funciona. Ideal para verificar varios. Lo bueno seria uno que leyera una lista de rut sin verificador y los dejara listitos....(pa no wear tanto escribiendo cada rut..jijii)..pero igual selente..gracias
     
  11. masyonadiemas

    masyonadiemas Usuario Nuevo nvl. 1
    1/41

    Joined:
    Feb 8, 2012
    Messages:
    12
    Likes Received:
    0
    yo le agregaría un IF para cerrarlo al ingresar un 0, cuando ande con mas tiempo te pongo la linea para que tampoco permita el ingreso de letras.

    abajo la solucion con la opcion de SALIR


    @echo off
    title Verificador RUT
    :rv
    cls
    echo.
    echo Si el rut tiene 7 digitos sin verificador, agregue un espacio al principio.
    echo Si desea cerrar la ventana ingrese 0.
    echo.


    ::Se define la variable "rut" que sufrira cambios en todo el proceso.
    set/p "rut=Ingrese el rut: "


    ::Cuando no se escribe nada el programa no se cierra.
    if not defined rut goto rv
    if %rut% == 0 goto salir


    ::Se toma el rut de derecha a izquierda.
    set "ocho=%rut:~7%"
    set "siete=%rut:~6,-1%"
    set "seis=%rut:~5,-2%"
    set "cinco=%rut:~4,-3%"
    set "cuatro=%rut:~3,-4%"
    set "tres=%rut:~2,-5%"
    set "dos=%rut:~1,-6%"
    set "uno=%rut:~0,1%"


    ::Se multiplica cada digito por los numeros que componen la serie numerica 2,3,4,5,6,7.
    set/a ocho=ocho*2
    set/a siete=siete*3
    set/a seis=seis*4
    set/a cinco=cinco*5
    set/a cuatro=cuatro*6
    set/a tres=tres*7
    set/a dos=dos*2
    set/a uno=uno*3


    ::Se suma el resultado de los anteriores.
    set/a af=%ocho%+%siete%+%seis%+%cinco%+%cuatro%+%tres%+%dos%+%uno%


    ::Se aplica el modulo 11:


    ::Se divide por 11
    set/a div=%af%/11


    ::Y se determina el resto
    set/a res=%af%%%11


    ::A 11 se le resta el resto.
    set/a valid=11-%res%


    ::Si el resultado es 11 el verificador sera 0.
    if %valid%==11 set "valid=0"


    ::Si el resultado es 10 el verificador sera K.
    if %valid%==10 set "valid=K"


    ::Rut completo.
    echo.
    echo Su rut completo es %rut%-%valid%
    echo.
    pause
    goto rv


    :salir
    cls
    exit
     
    #11 masyonadiemas, Feb 15, 2014
    Last edited: Feb 15, 2014