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:

  1. 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())
  2. 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.
  3. Si el número es válido, se calcula la letra que le corresponde según el método explicado anteriormente.
  4. Una vez calculada la letra, se debe comparar con la letra indicada por el usuario.
  5. Si no coinciden, se muestra un mensaje al usuario diciéndole que la letra que ha indicado no es correcta.
  6. 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");
  }

}

  1. 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.
  2. Luego, se comprueba si el número de DNI es válido, es decir, si está en el rango entre 0 y 99999999.
  3. Si no es válido, se muestra un mensaje al usuario y el programa no hace nada más.
  4. 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.
  5. 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).
  6. Si las letras no coinciden, se muestra un mensaje indicando que la letra es incorrecta.
  7. 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