Hola,
haciendo un ejercicio que se basa en comprobar si un DNI es correcto o no, me surge el siguiente problema: No consigo que identifique la letra introducida con la letra que le corresponde de una matriz. Os pongo el código para que lo veais con más facilidad:
Código Delphi
[-]program Ejercicio1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
dni: integer;
letra: string;
opcion: integer;
resto: integer;
buena: char;
matriz: array[0..22] of string = ('T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E');
begin
writeln('');
writeln('');
writeln('');
writeln('');
writeln('');
write(#9);
writeln('1.-Calculo de la letra del DNI.');
write(#9);
writeln('2.-Comprobar si el DNI es correcto.');
write(#9);
writeln('3.-Finalizar la ejecucion del programa.');
writeln('');
write(#9);
write('Selecciona cual de las opciones deseas procesar (1/2/3): ');
readln(opcion);
if opcion = 2 then
Begin
writeln('');
writeln('');
write(#9);
write('Introduce el DNI completo (numero y letra): ');
readln(dni,letra);
resto := dni mod 23;
Begin
if letra = matriz[resto] then writeln(#9'Al DNI ',dni,' le corresponde la letra ',matriz[resto])
else
writeln('Al DNI ',dni,' le corresponde la letra ',matriz[resto],' y no la letra ',letra);
readln;
end;
Al ejecutar me imprime siempre lo correspondiente al else ('Al DNI ',dni,' le corresponde la letra ',matriz[resto],' y no la letra ',letra) aunque sean iguales.
EDITO: Por cierto, he probado con char en lugar de string como tipo de datos de la matriz y de la variable 'letra'
Si alguien me pudiese echar una mano, se lo agradecería bastante.
Un saludo,
Geru.