SoloCodigo
Programación General => C/C++ => C++ Builder => Mensaje iniciado por: aguilot_21 en Jueves 31 de Marzo de 2005, 19:25
-
Buenas,
Alguien me puede decir como puede validar un DNI, que los 8 primeros sean enteros y el otro una letra??
Gracias
-
Podrias tomar los caracteres en un Edit, almacenarlos en un array de char y recorrerlos con un puntero... por medio de comparaciones podrias saber si los primeros 8 son numeros y el ultimo es un caracter. Saludos :hola:
-
Además, recuerda que la letra va es única para cada combinación de números de 8 cifras. Mira a ver si en Internet encuentras el algoritmo que te dice cual es la letra a partir de la ristra de números.
Nos vemos :hola:
-
Hola
Puedes hacer como te dice Jhonatan y meterlo en un *char y recorrerlo, para saber si es letra o numero puedes usar la libreria ctype.h que es ansic y supongo que tambien estara en c++builder estas son las funciones que proporciona:
http://c.conclase.net/librerias/libreria.php?lib=ctype (http://c.conclase.net/librerias/libreria.php?lib=ctype)
En tu caso puedes usar isdigit o isalpha para discriminar el caracter
Otra forma seria meter los DNI en strings y compararlos directamente
un saludo :hola:
-
Tengo otro problema, recorro los caracteres uno a uno mirando si es numero o no pero con el ultimo siempre me da error. Este es el codigo, a ver si me podeis ayudar:
oid __fastcall TAltaImp::Button1Click(TObject *Sender)
{
String Numeros,Lletra;
char c;
bool result;
int i;
Numeros=(DNI->Text).SubString(1,8);
Lletra=(DNI->Text).SubString(8,9);
result=true;
i=1;
while ((Numeros!=Null()&&(i<=8) && (result==true)))
{
DNI->Text ="DNI incorrecte";
c=Numeros;
result=(c>=0)||(c<=9);
i=i+1;
}
if (result==true)
{
DNI->Text ="DNI correcto";
}
else
{
DNI->Text ="DNI incorrecto";
}
}
Gracias
-
Hola, creo que en lugar de empezar con i=1; deberías empezar con i=0; ya que en los arrays el primer indice siempre es el 0. Por eso en la última iteración del bucle, en lugar de estar accediendo al último entero del DNI estás accediendo a la letra, y por eso pone result = false.
Espero que sea eso.
Un saludo.