Título: Congruencias DNI Publicado por: Abenthy en 28 Diciembre 2016, 17:56 pm Buenas tardes
Estoy haciendo un programa para calcular la letra del DNI y el NIF utilizando las congruencias módulo 23. He intentado hacerlo de esta forma: Código
Compila correctamente pero a la hora de realizar la operación del resto módulo 23 no se porque no lo realiza correctamente. ¿Alguna idea de que falla? Mod: Los códigos deben ir en etiquetas GeSHi Título: Re: Congruencias DNI Publicado por: engel lex en 28 Diciembre 2016, 18:00 pm no se como se calcula ni que trata de hacer el codigo... pero sospecho que crees que el char de '0' representa el numero 0, cosa que no es así al igual que el resto de los numeros...
Código
sospecho que haciendolo como int debería hacer lo que quieres por otro lado, case 0 no tiene break, por lo que continuará hasta case 1 Título: Re: Congruencias DNI Publicado por: Abenthy en 28 Diciembre 2016, 23:20 pm Muchas gracias Engel por tu respuesta. Ya he añadido el break que faltaba, sin embargo no acabo de entender que debería de cambiar a tipo int
Título: Re: Congruencias DNI Publicado por: engel lex en 28 Diciembre 2016, 23:36 pm matrix es tipo char * en char '1' es representado por el numero 49
(http://lacomputadora.org/wp-content/uploads/2015/03/codigo-ascii.jpg) así que cuando tu rograma llega a un '1' en lugar de ser R=1, será R=3 Código: 1 % 23 = 1 Título: Re: Congruencias DNI Publicado por: MAFUS en 28 Diciembre 2016, 23:44 pm No solo ese, tienes muchos fallos.
Usas Código: char matrix[200] Usas Código: R=matrix[j]%23 Usas Código: printf("%s", &letras[i]); En vez de un switch/case tan largo podrías usar una notación de array sobre una cadena, tal que así: Código: letras[i] = "TRWAGMYFPDXBNJZSQVHLCKE"[matrix[i]%23]; |