(Batch) Verificador RUT [CODIGO HECHO]

Tema en 'Programación & Programación Web' iniciado por the_patox, 18 Ene 2011.

  1. the_patox

    the_patox Usuario Nuevo nvl. 1
    1/41

    Registrado:
    31 May 2010
    Mensajes:
    670
    Me Gusta recibidos:
    1
    Un programa simple para calcular el ultimo digito del rut.

    Insertar CODE, HTML o PHP:
    @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, 18 Ene 2011
    Última edición: 18 Ene 2011
  2. virox

    virox Usuario Casual nvl. 2
    87/163

    Registrado:
    9 Jul 2007
    Mensajes:
    9.242
    Me Gusta recibidos:
    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

    Registrado:
    27 Sep 2009
    Mensajes:
    2.699
    Me Gusta recibidos:
    2
    jejjeje esta bueno
     
  4. BecKer

    BecKer Usuario Casual nvl. 2
    37/41

    Registrado:
    27 Sep 2009
    Mensajes:
    2.699
    Me Gusta recibidos:
    2
    mejor borras el goto rv y pones exit mejor
     
  5. the_patox

    the_patox Usuario Nuevo nvl. 1
    17/41

    Registrado:
    31 May 2010
    Mensajes:
    670
    Me Gusta recibidos:
    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

    Registrado:
    19 Sep 2008
    Mensajes:
    70.248
    Me Gusta recibidos:
    49
    gracias man !
     
  7. Maathy!

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

    Registrado:
    25 Abr 2009
    Mensajes:
    57.826
    Me Gusta recibidos:
    2
    y ese mismo codigo en c# ?
     
  8. the_patox

    the_patox Usuario Nuevo nvl. 1
    17/41

    Registrado:
    31 May 2010
    Mensajes:
    670
    Me Gusta recibidos:
    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

    Registrado:
    18 Jun 2010
    Mensajes:
    8
    Me Gusta recibidos:
    0
    lo probe y no fuk
     
  10. clyman

    clyman Usuario Nuevo nvl. 1
    6/41

    Registrado:
    29 Sep 2009
    Mensajes:
    78
    Me Gusta recibidos:
    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

    Registrado:
    8 Feb 2012
    Mensajes:
    12
    Me Gusta recibidos:
    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, 15 Feb 2014
    Última edición: 15 Feb 2014