Vota por nosotros en el ranking web que participamos

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Octubre 12, 2008, 08:49:12
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Batch (Moderadores: Espectro Infernal, |Shadow|)  |  Tema: Otra aplicacion del modulo 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Otra aplicacion del modulo  (Leído 127 veces)
sami
Habitual
*****
Desconectado Desconectado

Mensajes: 397



Ver Perfil Email
« en: Junio 19, 2008, 11:49:13 »

La operacion modulo se usa para calcular la letra de los DNIs españoles.
Si alguna vez quereis registraros en una web en la que piden un DNI y no quereis dar el vuestro habreis visto que os lo rechaza por meter una letra incorrecta. Con este programa no tendreis ese problema.
Mirad como detalle que se usa un modulo 23, tan sencillo como eso.

Código:
@echo off

if not .%1.==.. goto dni
echo Calculadora de la letra del DNI espa~ol.
echo Uso: DNI.bat [DNI]
exit /B 0

:dni
if %1 GTR 99999999 goto error
if 0 GTR %1 goto error
set /a dni=%1%%23
if %dni% EQU 0  (set l=T) & (goto fin)
if %dni% EQU 1  (set l=R) & (goto fin)
if %dni% EQU 2  (set l=W) & (goto fin)
if %dni% EQU 3  (set l=A) & (goto fin)
if %dni% EQU 4  (set l=G) & (goto fin)
if %dni% EQU 5  (set l=M) & (goto fin)
if %dni% EQU 6  (set l=Y) & (goto fin)
if %dni% EQU 7  (set l=F) & (goto fin)
if %dni% EQU 8  (set l=P) & (goto fin)
if %dni% EQU 9  (set l=D) & (goto fin)
if %dni% EQU 10 (set l=X) & (goto fin)
if %dni% EQU 11 (set l=B) & (goto fin)
if %dni% EQU 12 (set l=N) & (goto fin)
if %dni% EQU 13 (set l=J) & (goto fin)
if %dni% EQU 14 (set l=Z) & (goto fin)
if %dni% EQU 15 (set l=S) & (goto fin)
if %dni% EQU 16 (set l=Q) & (goto fin)
if %dni% EQU 17 (set l=V) & (goto fin)
if %dni% EQU 18 (set l=H) & (goto fin)
if %dni% EQU 19 (set l=L) & (goto fin)
if %dni% EQU 20 (set l=C) & (goto fin)
if %dni% EQU 21 (set l=K) & (goto fin)
if %dni% EQU 22 (set l=E)

:fin
echo La letra del DNI %dni% es la %l%.
exit /b 0

:error
echo Error: El DNI introducido no es valido.
exit /b 1
En línea
Espectro Infernal
T0 d0: -> Mejorar 3 en raya
Moderadores
Colaborador
*****
Desconectado Desconectado

Mensajes: 869


ESPECTRO INFERNAL


Ver Perfil Email
« Respuesta #1 en: Junio 19, 2008, 02:51:36 »

Bonito código, supongo que tuviste que saber más o informarte de como van los DNI españoles para saber que si el resultado del modulo 23 es 17 la letra sea la "V".

Me gusta que uses exit /b, aunque a mi eso me dió algun problema en aplicaciones grandes. Y da la ventaja de no usar pause Wink

Bytes, Espectro Infernal.
En línea





sami
Habitual
*****
Desconectado Desconectado

Mensajes: 397



Ver Perfil Email
« Respuesta #2 en: Junio 19, 2008, 04:14:44 »

el algoritmo es publico, la tabla de letras asociadas a su modulo la puedes encontrar facilmente jeje
saludos!
En línea
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Batch (Moderadores: Espectro Infernal, |Shadow|)  |  Tema: Otra aplicacion del modulo « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.6 | SMF © 2006-2007, Simple Machines LLC