Foros del Web » Programando para Internet » Javascript »

Duda con módulo en el programa letra del DNI

Estas en el tema de Duda con módulo en el programa letra del DNI en el foro de Javascript en Foros del Web. No entiendo cómo funciona el programa para calcular la letra del DNI El número que introduce el usuario se divide por 23 y se obtiene ...
  #1 (permalink)  
Antiguo 02/06/2013, 14:15
Avatar de Linton  
Fecha de Ingreso: diciembre-2011
Ubicación: Viena
Mensajes: 1.213
Antigüedad: 12 años, 10 meses
Puntos: 55
Duda con módulo en el programa letra del DNI

No entiendo cómo funciona el programa para calcular la letra del DNI El número que introduce el usuario se divide por 23 y se obtiene el módulo, Hasta aquí todo claro.

El problema viene porque el array dado tiene 24 elementos: ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E', 'T']

Así que nunca podrían salir las dos últimas letras, E y T: para ello el módulo (resto) debería ser igual o mayor que el divisor, cosa matemáticamente absurda. Si el resto fuera igual o mayor a 23, aumentaría el cociente en una unidad, quedando resto 0 ó 1.

¿Dónde está el fallo? Gracias, un saludo.
  #2 (permalink)  
Antiguo 03/06/2013, 01:43
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Duda con módulo en el programa letra del DNI

Supongo que hay mas de un script para calcular la letra del DNI .... y dudo que sean aplicables al Documento Nacional de Identidad de cualquier pais... (hay paises que no tienen DNI, Gran Bretaña sin ir mas lejos)....

Luego estaria bien que posteras el que estas usando para que se te pueda ayudar a interpretarlo.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 03/06/2013, 01:54
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: Duda con módulo en el programa letra del DNI

La última T de tu cadena no vale pa ná. Elimínala.


Gran colaboración, quimfv
  #4 (permalink)  
Antiguo 04/06/2013, 03:44
Avatar de Linton  
Fecha de Ingreso: diciembre-2011
Ubicación: Viena
Mensajes: 1.213
Antigüedad: 12 años, 10 meses
Puntos: 55
Respuesta: Duda con módulo en el programa letra del DNI

Cita:
Iniciado por quimfv Ver Mensaje
Supongo que hay mas de un script para calcular la letra del DNI .... y dudo que sean aplicables al Documento Nacional de Identidad de cualquier pais... (hay paises que no tienen DNI, Gran Bretaña sin ir mas lejos)....
Obviamente sólo puedo referirme a DNI existentes. Y en realidad no tengo ningún interés por las letras de los DNI; simplemente estoy aprendiendo JavaScript y no entiendo un ejercicio

Cita:
Iniciado por marlanga Ver Mensaje
La última T de tu cadena no vale pa ná.
No es "mi" cadena, sino la del manual Introducción a Javascript, de Javier Eguíluz

Gracias a los dos, saludos.
  #5 (permalink)  
Antiguo 04/06/2013, 10:44
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Duda con módulo en el programa letra del DNI

Cita:
Iniciado por Linton Ver Mensaje
Obviamente sólo puedo referirme a DNI existentes. Y en realidad no tengo ningún interés por las letras de los DNI; simplemente estoy aprendiendo JavaScript y no entiendo un ejercicio


No es "mi" cadena, sino la del manual Introducción a Javascript, de Javier Eguíluz

Gracias a los dos, saludos.
Entonces probablemente estés utilizando esto

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ejercicio 6 - Calculo de la letra del DNI</title>
<script type="text/javascript">
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 numero = prompt("Introduce tu número de DNI (sin la letra)");
var letra = prompt("Introduce la letra de tu DNI (en mayúsculas)");
letra = letra.toUpperCase();
if(numero < 0 || numero > 99999999) {
alert("El número proporcionado no es válido");
}
else {
var letraCalculada = letras[numero % 23];
if(letraCalculada != letra) {
alert("La letra o el número proporcionados no son correctos");
}
else {
alert("El número de DNI y su letra son correctos");
}
}
</script>
</head>
<body>
<p>Esta página calcula la letra del DNI</p>
</body>
</html> 
Es cierto que la última T sobra, como te han dicho, pero poco interesa, asi como si hubieses agregado más letras al final del Array, la división siempre se hace x 23 con lo que el módulo resultará entre 0 y 22 indefectiblemente, aqui lo importante es que la secuencia de los primeros 23 elementos del array sea correcta

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #6 (permalink)  
Antiguo 05/06/2013, 00:05
Avatar de Linton  
Fecha de Ingreso: diciembre-2011
Ubicación: Viena
Mensajes: 1.213
Antigüedad: 12 años, 10 meses
Puntos: 55
Respuesta: Duda con módulo en el programa letra del DNI

Sí, pero me intrigaba ese fallo Pensaba que el programa debía funcionar con todos los elementos, y no veía la forma. ¡Gracias!
  #7 (permalink)  
Antiguo 05/06/2013, 07:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Duda con módulo en el programa letra del DNI

Cita:
Obviamente sólo puedo referirme a DNI existentes. Y en realidad no tengo ningún interés por las letras de los DNI; simplemente estoy aprendiendo JavaScript y no entiendo un ejercicio
Releyendo tus post no veo la obviedad que mencinas por ninguna parte, solo veo que se pide explicaciones sobre un script que calcula la letra del DNI sin mas especificación ni indicación. Por lo que lo mas normal es que se te pida que script estas usando para poder ayudarte. Esto último si me parece una obviedad.

Cita:
No es "mi" cadena, sino la del manual Introducción a Javascript, de Javier Eguíluz
Agradece a @emprear que se ha molestado a buscar el codigo cuando era mucho mas facil que tu nos lo postearas.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #8 (permalink)  
Antiguo 05/06/2013, 07:35
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: Duda con módulo en el programa letra del DNI

Cita:
Iniciado por quimfv Ver Mensaje
Releyendo tus post no veo la obviedad que mencinas por ninguna parte, solo veo que se pide explicaciones sobre un script que calcula la letra del DNI sin mas especificación ni indicación. Por lo que lo mas normal es que se te pida que script estas usando para poder ayudarte. Esto último si me parece una obviedad.

Agradece a @emprear que se ha molestado a buscar el codigo cuando era mucho mas facil que tu nos lo postearas.
Viendo el array de letras, ví claro que se refería al DNI español, y el código no era necesario postearlo porque en el primer mensaje de todos quedaba absolutamente claro cuál era la idea del algoritmo que calcula la letra de un dni.
  #9 (permalink)  
Antiguo 05/06/2013, 12:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Duda con módulo en el programa letra del DNI

Cita:
---Cita (Autor quimfv)---
Releyendo tus post no veo la obviedad que mencinas por ninguna parte, solo veo que se pide explicaciones sobre un script que calcula la letra del DNI sin mas especificación ni indicación. Por lo que lo mas normal es que se te pida que script estas usando para poder ayudarte. *Esto último si me parece una obviedad.*

Agradece a *@emprear* que se ha molestado a buscar el codigo cuando era mucho mas facil que tu nos lo postearas.
---Fin de Cita---
Era una obviedad, y el código no era necesario explicarlo porque en el primer mensaje de todos quedaba absolutamente claro cuál era la idea del algoritmo que calcula la letra de un dni.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #10 (permalink)  
Antiguo 05/06/2013, 12:15
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Duda con módulo en el programa letra del DNI

A mi me resultaba tan obvio, que suponía que quería determinar la letra del DNI de los ciudadanos Austríacos.

__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #11 (permalink)  
Antiguo 05/06/2013, 13:17
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: Duda con módulo en el programa letra del DNI

Tienes razón; siempre olvido que algunos somos más listos que otros; y que esos otros requieren de muchas más explicaciones para llegar a la misma conclusión. A mi me bastó con el escueto mensaje del primer post. A otros está claro que no.
  #12 (permalink)  
Antiguo 05/06/2013, 13:41
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Duda con módulo en el programa letra del DNI

Cita:
Iniciado por marlanga Ver Mensaje
Tienes razón; siempre olvido que algunos somos más listos que otros; y que esos otros requieren de muchas más explicaciones para llegar a la misma conclusión. A mi me bastó con el escueto mensaje del primer post. A otros está claro que no.
A ver listillo, todavia no tomaste nota de que este foro no es exclusivo de programadores "españoles", nuestro amigo @linton señaló
Cita:
Obviamente sólo puedo referirme a DNI existentes. Y en realidad no tengo ningún interés por las letras de los DNI; simplemente estoy aprendiendo JavaScript y no entiendo un ejercicio
y posteriormente,
Cita:
No es "mi" cadena, sino la del manual Introducción a Javascript, de Javier Eguíluz
y es por ese lado dónde más o menos pesqué la cosa, ya que justamente Javier Eguíluz es un colaborador activo de librosweb.es, una web bastante referenciada en FDW, por lo que no estaba seguro, pero la secuencia de letras me resultaba familiar de haber leído algunos de los ejercicios del libro de consulta al que se menciona. En consecuencia no me parece ni descabellado, ni inútil ni redundante haber traido como dato relevante la script que hace al meollo del asunto, a fin de hacer más comprensible la cosa.

@marlanga, hasta tu intervención en:
Cita:
La última T de tu cadena no vale pa ná. Elimínala.
, venías bien, pero parece que no podés con tu genio, porque no duraste 2 líneas sin tener que meter tu bocadillo irónico acerca del comentario de @quimfv, que sin dudas fue oportuno.

__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #13 (permalink)  
Antiguo 05/06/2013, 13:55
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: Duda con módulo en el programa letra del DNI

Con un sólo vistazo al array de letras me bastó para saber que hablaba del DNI español. Si hubiera sido de otro idioma, simplemente me habría informado antes de responder para ir al grano.
  #14 (permalink)  
Antiguo 06/06/2013, 03:38
Avatar de jomaruro
Colaborador
 
Fecha de Ingreso: junio-2002
Ubicación: Naboo
Mensajes: 5.442
Antigüedad: 22 años, 4 meses
Puntos: 361
Respuesta: Duda con módulo en el programa letra del DNI

Hola:

Polémicas aparte, está claro que la sigla DNI, si se refiere al Documento Nacional De Identidad como tal, es exclusivo de España, en la República Dominicana se refiere al Departamento Nacional de Investigaciones, la agencia de inteligencia.

Para más definiciones del documento de identidad: Documento de identidad.

Saludos.

  #15 (permalink)  
Antiguo 06/06/2013, 06:17
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Duda con módulo en el programa letra del DNI

Cita:
Iniciado por jomaruro Ver Mensaje
Hola:

Polémicas aparte, está claro que la sigla DNI, si se refiere al Documento Nacional De Identidad como tal, es exclusivo de España, en la República Dominicana se refiere al Departamento Nacional de Investigaciones, la agencia de inteligencia.

Para más definiciones del documento de identidad: Documento de identidad.

Saludos.

@jomaruro, no entiendo lo de la "exclusividad", es más, el mismo link que dejás como referencia despeja toda duda:
Cita:
En Argentina el DNI es el único instrumento de identificación personal, y es obligatorio; su formato y uso están reglamentados por la Ley N° 17671 de Identificación, Registro y Clasificación del Potencial Humano Nacional, dictada en 1968, por la cual reemplazó a las Libretas de Enrolamiento que se expedían para los hombres en ocasión del servicio militar obligatorio y las Libretas Cívicas que recibían las mujeres al cumplir 18 años


y no incluye letra alguna.

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #16 (permalink)  
Antiguo 06/06/2013, 06:55
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: Duda con módulo en el programa letra del DNI

Cita:
Iniciado por emprear Ver Mensaje
y no incluye letra alguna.
El DNI sólo existe con tal nombre en españa, argentina, y perú. Sólo en españa tiene letra.

Ahora que cada cual vuelva a leer los comentarios y considere cuáles son ridículos.
  #17 (permalink)  
Antiguo 06/06/2013, 07:06
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: Duda con módulo en el programa letra del DNI

buenas a todos... @linton, ¿tu duda ya está resuelta?
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #18 (permalink)  
Antiguo 06/06/2013, 12:45
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Duda con módulo en el programa letra del DNI

Cita:
Iniciado por marlanga Ver Mensaje
El DNI sólo existe con tal nombre en españa, argentina, y perú. Sólo en españa tiene letra.

Ahora que cada cual vuelva a leer los comentarios y considere cuáles son ridículos.
Sin dudas este
http://www.forosdelweb.com/f13/duda-...4/#post4444185

ya que te quedás solo con la parte que te conviene, como de costumbre, te olvidas de un pequeño ingrediente, y me autocito
Cita:
este foro no es exclusivo de programadores "españoles",
(o que vivan en España o que deban trabajar verificando DNI de España), trás la publicación del primer posts que solo incluye un fragmento de código aislado, no cualquiera puede asumir de que se está hablando con una certeza absoluta, salvo vos claro, que lo sabés, pero que lo sepas no invalida que otros soliciten alguna precisión al respecto, solo el desarrollo posterior y la información extra proporcionada despejan toda duda.


__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #19 (permalink)  
Antiguo 06/06/2013, 14:55
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: Duda con módulo en el programa letra del DNI

Mira que cosas, me vale la misma respuesta.
Cita:
Iniciado por marlanga Ver Mensaje
Tienes razón; siempre olvido que algunos somos más listos que otros; y que esos otros requieren de muchas más explicaciones para llegar a la misma conclusión. A mi me bastó con el escueto mensaje del primer post. A otros está claro que no.

Etiquetas: dni, funcion, letra, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:39.