Ver temario
JavaScript: Estructuras if else
Ejercicio 6
El cálculo de la letra del Documento Nacional de Identidad (DNI) es un proceso matemático sencillo que se basa en obtener el resto de la división entera del número de DNI y el número 23. A partir del resto de la división, se obtiene la letra seleccionándola dentro de un array de letras.
El array de letras es: var letras = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E', 'T'];
Por tanto si el resto de la división es 0, la letra del DNI es la T y si el resto es 3 la letra es la A.
Con estos datos, elaborar un pequeño script que:
- Almacene en una variable el número de DNI indicado por el usuario y en otra variable la letra del DNI que se ha indicado. (Pista: si se quiere pedir directamente al usuario que indique su número y su letra, se puede utilizar la función prompt())
- En primer lugar (y en una sola instrucción) se debe comprobar si el número es menor que 0 o mayor que 99999999. Si ese es el caso, se muestra un mensaje al usuario indicando que el número proporcionado no es válido y el programa no muestra más mensajes.
- Si el número es válido, se calcula la letra que le corresponde según el método explicado anteriormente.
- Una vez calculada la letra, se debe comparar con la letra indicada por el usuario.
- Si no coinciden, se muestra un mensaje al usuario diciéndole que la letra que ha indicado no es correcta.
- En otro caso, se muestra un mensaje indicando que el número y la letra de DNI son correctos.
Solución
var letras = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E', 'T'];
var dni = prompt("Introduce tu número de DNI:");
var letra = prompt("Introduce la letra de tu DNI:");
if (dni < 0 || dni > 99999999) {
alert("El número proporcionado no es válido");
} else {
var resto = dni % 23;
var letraCalculada = letras[resto];
if (letraCalculada != letra.toUpperCase()) {
alert("La letra que has indicado no es correcta");
} else {
alert("El número y la letra de DNI son correctos");
}
}
- Primero se define el array de letras, luego se pide al usuario que introduzca su número de DNI y su letra, y se almacenan en las variables
dni
y letra
.
- Luego, se comprueba si el número de DNI es válido, es decir, si está en el rango entre 0 y 99999999.
- Si no es válido, se muestra un mensaje al usuario y el programa no hace nada más.
- Si el número de DNI es válido, se calcula la letra correspondiente usando el resto de la división por 23 y se almacena en la variable
letraCalculada
.
- Luego, se compara la letra calculada con la letra indicada por el usuario en mayúsculas (para evitar problemas con mayúsculas y minúsculas).
- Si las letras no coinciden, se muestra un mensaje indicando que la letra es incorrecta.
- En caso contrario, se muestra un mensaje indicando que el número y la letra de DNI son correctos.
Prueba poniendo el código anterior entre etiquetas de script en la parte del body de tu pagina html y verás que ocurre