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 Saludos
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.
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
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
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
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