[ Foro de Pascal ]

Principiante - Iniciales

27-Aug-2010 01:18
Enzo Hernan chavez
4 Respuestas

Hola como estas todos...
Es la primera vez que me suscribo a un foro, y estoy aprendiendo a programar en pascal.
Bueno necesito ayuda si alguien me puede ayudar desde ya muchas gracias.
Tengo un problema que dice asi
Realizar un programa que permita ingresar los datos de N personas(apellido, nombre, DNI)con esta informacion generar y mostrar la clave que se formara con las iniciales del apellido Y nombres + los 4 digitos mas significativos del DNI.
por ej.
Si Apellido= Hernadez, Nombres= Juan Carlos y DNI= 25361423
la salida sera
CLAVE= HJC2536
y mi duda es en la parte que tengo que quedarme con las iniciales del nombre como hago porque si tiene mas de 1 nombre voy a tener mas de una inicial.


27-Aug-2010 01:21
Nacho Cabanes (+31)

Para saber la primera letra del apellido es fácil:

inicial := apellido[1];

Para saber las iniciales del nombre, incluso si es compuesto: la primera inicial es como en el caso anterior; la demás iniciales son las letras que están detrás de un espacio, así que deberás recorrer con un "for" toda la cadena de texto que forma el nombre, comprobando letra a letra si en esa posición hay un espacio, y si es así, guardando la siguiente letra.

(Dicho así, es sencillo, pero falla si se introducen dos espacios seguidos; eso es muy fácil de resolver, pero te dejo que lo pienses un poco... ;-D )


27-Aug-2010 03:32
Enzo Hernan chavez

Ok muchas gracias por su atencion...
Entoces tendria que recorrer la variable donde estan guardados los nombres con un for desde la posicion 1 hasta Lenght(cadena)'cadena:= nombres' buscando un espacio en blanco para almacenar la posicion siguiente que vendria a ser la inicial del proximo nombre  siempre y cuando no deje dos espacios en blanco despues del primer nombre. Suponiendo el mejor de los casos el proximo paso seria unir los caracteres y los cuatro primeros digito s del DNI ¿Pero puedo concatenar un char con numeros?


27-Aug-2010 17:46
Nacho Cabanes (+31)

Sí, lo de buscar si es un espacio lo harias comprobando la posición "i" de la cadena inicial, usando corchetes: "cadena[i]". Puedes "sumar" (concatenar) letras a una cadena, para ir guardando todas las iniciales en una nueva cadena. Aquí tienes las pistas:

var
 listaIniciales: string;

...
if cadena[i] = ' ' then
 listaIniciales := listaIniciales + cadena[i+1];


Falta un par de detalles por afinar, pero te dejo que lo remates tú.  ;-)


27-Aug-2010 18:28
Antonio P.G.

Hola.

Haz una cosa: no trates el DNI como un número, sino como un string, una sucesión de caracteres. Así no tendrás problemas para hacer lo que dice el profesor.

¡Ciao!






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)