5. Implementar la función imprimirTPersona.

5. Implementar la función imprimirTPersona.

de Alejandro Blanco -
Número de respuestas: 14
En respuesta a Alejandro Blanco

Re: 5. Implementar la función imprimirTPersona.

de Luciano Miguel Duarte Rodríguez -
Buenas Noches, se puede usar funciones de otros módulos por ejemplo en imprimirTPersona usar imprimirTFecha ?
En respuesta a Alejandro Blanco

Re: 5. Implementar la función imprimirTPersona.

de Francisco Joaquin Parris Jones -
Buenas, en la letra de imprimirTpersona dice que hay que imprimirlo como "Fecha de Nacimiento:" y en el archivo "persona4-imprimirpersona.out" aparece como "Fecha de nacimiento", lo dejé como minuscula para que coincida con el resultado esperado, pero me gustaria saber cual es correcto.
En respuesta a Francisco Joaquin Parris Jones

Re: 5. Implementar la función imprimirTPersona.

de Alejandro Blanco -
Francisco.

El ejemplo que mencionas de la letra de la tarea, esta mal. Si te fijas en el encabezado include/persona.h allí te indica el formato correcto de la salida:
// Función que imprime la información de la persona en el siguiente formato:
// Persona // Cédula: // Fecha de nacimiento:
Así que el correcto es la especificación del .h ....

Igualmente veo de hacer la corrección de la letra.

Saludos

Alejandro B
En respuesta a Alejandro Blanco

Re: 5. Implementar la función imprimirTPersona.

de María Catalina Tabeira La Cava -
buenas una pregunta, en la funcion imprimirTPersona me marca como salida correcta cuando nombre esta sin los dos puntos, es decir ("persona" en vez de "persona:"), lo pongo sin los dos puntos asi me da la salida correcta? porq si hacen los cambios en la letra y en los casos, la salida me daria incorrecta por el ":"
En respuesta a María Catalina Tabeira La Cava

Re: 5. Implementar la función imprimirTPersona.

de Maria de las Nieves Freira -
Hola, Catalina.
Como bien decís, la salida correcta es aquella en la que el texto no lleva ':' después de «Persona». Pero ahí no hay nada que cambiar, porque coindice la letra con el .h y los casos de prueba (aunque no sea la redacción más prolija).
El cambio del que se hablaba en el mensaje anterior era un cambio para ajustar la letra al .h, si es que hubiera alguna discrepancia, y hacía referencia a otro texto.
Así que ese por el que preguntás no se va a cambiar.

Saludos cordiales,
María
En respuesta a Alejandro Blanco

Re: 5. Implementar la función imprimirTPersona.

de Santiago Valente Petrone -
Buenas, tengo problemas al intentar acceder a los componentes de fechadenacimiento (de tipo TFecha) para imprimir en esta funcion. Parece ser que le estoy errando en algo que va de la mano a que quiero acceder a los campos de lo que apunta un puntero pero no entiendo bien como sería la estructura.
Este es el printf que hago de la fecha y al compilar me da errores apuntado a la flechita que va desde fechadenacimiento hasta alguno de los campos"printf("Fecha de nacimiento: %d/%d/%d \n", persona->fechadenacimiento->dia, persona->fechadenacimiento->mes, persona->fechadenacimiento->anio);"

Este es el error que me da:
src/../include/fecha.h:15:16: note: forward declaration of ‘struct rep_fecha’
15 | typedef struct rep_fecha *TFecha;
| ^~~~~~~~~
src/persona.cpp:84:103: error: invalid use of incomplete type ‘struct rep_fecha’
84 | intf("Fecha de nacimiento: %d/%d/%d \n", persona->fechadenacimiento->dia, persona->fechadenacimiento->mes, persona->fechadenacimiento->anio);
|

Muchas gracias y saludos.
En respuesta a Santiago Valente Petrone

Re: 5. Implementar la función imprimirTPersona.

de Raul Maglione -
Buenas Santiago,

A simple vista diría que el problema es que estás accediendo mal a los campos día y mes. Esto parece ser porque no has definido bien el rep_fecha aún, revisa eso y verifica que esté bien implementado.
Lo otro, que no solucionará el problema pero sí ayudará a evitarlo, es que tal vez haya alguna función en fecha.h que pueda ayudarte, revísalo.
Si el problema persiste, no dudes en volver a preguntar.

Saludos,
Raúl.
En respuesta a Alejandro Blanco

Re: 5. Implementar la función imprimirTPersona.

de Mateo Garcia Esposito -
Buenas! Para imprimir los arreglos de caracteres de nombre y apellido hay que usar strlen? Porque string.h esta incluido, y además no se conoce un tope del arreglo que permita imprimir solamente los datos cargados. Muchas Gracias!
En respuesta a Mateo Garcia Esposito

Re: 5. Implementar la función imprimirTPersona.

de Federico Bello Perez -
Hola Mateo,
Con `printf` te debería andar bien, tuviste algun problema? Nombre y apellido en principio deberían ser arreglos, no arreglos con tope

Saludos!
En respuesta a Federico Bello Perez

Re: 5. Implementar la función imprimirTPersona.

de Mateo Garcia Esposito -
Entonces debo tener algún error conceptual. Me refería a utilizar strlen para saber cuando termina mi arreglo. Ya que no se conoce la cantidad de caracteres del nombre de la persona, al iterar para imprimirlos, terminaba imprimiendo los 100 caracteres de MAX_NOMBRE, siendo nulos los restantes después del nombre. Debido a la confusión, supongo que es por otro lado y el error es conceptual por mi parte.
Gracias!
En respuesta a Alejandro Blanco

Re: 5. Implementar la función imprimirTPersona.

de Nicolas Emanuel Esmite Valdez -
Buenas tardes. En la función de fechaNacimientoTPersona me arroja el siguiente mensaje en terminal :
< 1>2>Persona creada de forma exitosa. < 3>La fecha de nacimiento de la persona es: 24/3/2024 < 4>5>Fin.
---
> ==341563== Invalid write of size 4
> ==341563== at 0x10A7F2: fechaNacimientoTPersona(rep_persona*) (persona.cpp:113)
> ==341563== by 0x109C2E: main_imprimirFechaPersona(rep_persona*) (principal.cpp:257)
> ==341563== by 0x109544: main (principal.cpp:129)
> ==341563== Address 0x8 is not stack'd, malloc'd or (recently) free'd
> ==341563==
> ==341563==
> ==341563== Process terminating with default action of signal 11 (SIGSEGV)
> ==341563== Access not within mapped region at address 0x8
> ==341563== at 0x10A7F2: fechaNacimientoTPersona(rep_persona*) (persona.cpp:113)
> ==341563== by 0x109C2E: main_imprimirFechaPersona(rep_persona*) (principal.cpp:257)
> ==341563== by 0x109544: main (principal.cpp:129)
> ==341563== If you believe this happened as a result of a stack
> ==341563== overflow in your program's main thread (unlikely but
> ==341563== possible), you can try to increase the size of the
> ==341563== main thread stack using the --main-stacksize= flag.
> ==341563== The main thread stack size used in this run was 8388608.
> Segmentation fault

Aparenta que la salida es la esperada, pero no sabría como solucionar los otros mensajes. Me podrían iluminar?