2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

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

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Julián Larrosa Acosta -
Buenas noches, no entiendo este error que me marca la terminal:
src/../include/persona.h:21:16: note: forward declaration of ‘struct rep_persona’
21 | typedef struct rep_persona *TPersona;
| ^~~~~~~~~~~
En respuesta a Julián Larrosa Acosta

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Alejandro Blanco -

Julián.

Revisa sino estas definiendo en forma duplicada TPersona.

Agregaste alguna declaración de TPersona en el modulo grupo?

Fijate sino modificaste sin querer alguna de las definiciones de tipo de los .h

Saludos

Alejandro B

En respuesta a Alejandro Blanco

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Felipe Rosa IbãÃ‘Ez -
Buenas tardes, cuando hago el make testing me dice que tengo errores en los casos grupo2-agregar-imprimir y grupo3-agregarvarios-imprimir, sin embargo cuando hago el test ./principal < test/grupo2-agregar-imprimir.in, el resultado me sale igual al esperado, a que se puede deber? gracias
En respuesta a Felipe Rosa IbãÃ‘Ez

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Federico Bello Perez -
Hola Felipe,

Proba hacer un diff entre lo que te da cuando haces `./principal < test/grupo2-agregar-imprimir.in` y lo que te debería dar. Puede que haya algún espacio y eso este causando el error.

Saludos!
En respuesta a Federico Bello Perez

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Santiago Fabian Bazzano Cabrera -
Hola buen día , no me compila el principal después de haber hecho crearTgrupo
principal.cpp:310:24: error: too few arguments to function ‘rep_grupo* crearTGrupo(int, int, rep_persona**)’
310 | grupo = crearTGrupo();
| ~~~~^
In file included from principal.cpp:28:
include/grupo.h:21:8: note: declared here
21 | TGrupo crearTGrupo(int cantidad, int capacidad, TPersona arreglopersonas[MAX_PERSONAS]);
| ^~~~~
make: * [Makefile:75: obj/principal.o] Error 1

Fui a la linea 310 del principal.cpp y en void main_crearGrupo (TGrupo &grupo) cuando a grupo = crearTGrupo() (no se le pasa nada) no se si es por eso pero me pareció raro que halla que modificar el principal.cpp por eso pregunto
En respuesta a Santiago Fabian Bazzano Cabrera

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Alejandro Blanco -
Santiago.

Me parece que modificaste la firma (definición) de crearTGrupo en grupo.h

Esta función no recibe nada como parámetro, solamente devuelve algo del tipo TGrupo inicializado.

Saludos

Alejandro B
En respuesta a Alejandro Blanco

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Santiago Fabian Bazzano Cabrera -
Es correcto deje todo como estaba incialmente , probé hacer make clean y compilar de vuelta, sigue sin compilar aun así .
Compilando y enlazando principal
/usr/bin/ld: obj/principal.o: in function `main_crearGrupo(rep_grupo*&)':
/home/santiago/prog2/lab/tarea1/principal.cpp:310: undefined reference to `crearTGrupo()'
collect2: error: ld returned 1 exit status
make: *** [Makefile:84: principal] Error 1
En respuesta a Santiago Fabian Bazzano Cabrera

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Alejandro Blanco -
Santiago.

Algo sigue mal con los archivos.

Descarga los materiales de nuevo y descomprimilo en otra carpeta. Copia los .cpp de los módulos que implementaste y compila de nuevo.

Avisanos a ver como te va.

Saludos

Alejandro B
En respuesta a Alejandro Blanco

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Diego Nicolas Acosta Piriz -
hola, buenas noches al implementar crearTGrupo, y agregarAGrupo me da un problema que creo es de la memoria, me sale 'double free or corruption (out) Aborted (core dumped)' al ejecutar el caso de 'prueba grupo3-agregarvarios-imprimir', intente fijarme si con las funciones liberarTPersona y liberarTFecha podia solucionarlo y no pude, ya que si intento liberar la memoria de esos punteros se borra lo que esta en la asignacion en el struct de TPersona y TGrupo respectivamente, en los campos persona de grupo y fecha de persona, alguna sugerencia?
muchas gracias desde ya.
En respuesta a Diego Nicolas Acosta Piriz

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Alejandro Blanco -
Diego.

En algún lado estas haciendo mal manejo de memoria cuando manipulas el array con tope. Proba de correr los casos de prueba manualmente para saber en que caso esta fallando.

Saludos

Alejandro B
En respuesta a Alejandro Blanco

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Emiliano Esponda Bentancor -
hola, buenas noches, a la hora de compilar para probar con los casos de prueba de esta sección me marca este mismo error pero en varios lugares

src/../include/persona.h:21:16: note: forward declaration of ‘struct rep_persona’
21 | typedef struct rep_persona *TPersona;
src/grupo.cpp:30:95: error: invalid use of incomplete type ‘struct rep_persona’

el error lo indica al usar '->', pero no entiendo el porque, ya que lo estoy usando en un puntero.
saludos, gracias.
En respuesta a Emiliano Esponda Bentancor

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Alejandro Blanco -
Estas queriendo acceder a campos o datos dentro del struct rep_persona cuya definición no es visible dentro del módulo grupo.cpp

Esto puede suceder p.e. porque estas queriendo acceder a campos de fecha en lugar de usar las funciones del módulo fecha

Avisa si podes encontrar el error.

Saludos

Alejandro B
En respuesta a Alejandro Blanco

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Facundo Gaston Arevalo Lara -

Buenas, me está arrojando el siguiente error cuando hago el test del grupo2:

farevalo@DESKTOP-TKER485:~/tarea1$ make t-grupo2-agregar-imprimir
Compilando src/grupo.cpp
Compilando y enlazando principal
4,7c4
< 5>Persona John Doe
< Cedula: 1234567
< Fecha de nacimiento: 22/3/2024
< 6>Se ha borrado el grupo en forma exitosa.
---
> 5>6>Se ha borrado el grupo en forma exitosa.
8a6,11
> ==116745== 228 (216 direct, 12 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2
> ==116745==    at 0x4849013: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==116745==    by 0x10A6CA: crearTPersona(int, char const*, char*, rep_fecha*) (persona.cpp:19)
> ==116745==    by 0x109B4F: main_crearPersona(rep_persona*&, rep_fecha*&) (principal.cpp:244)
> ==116745==    by 0x1094D7: main (principal.cpp:123)
> ==116745==

En respuesta a Alejandro Blanco

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de David Hidalgo Alvarez -
Buenas en la implementacion de la funcion agregar grupo asumimos que el grupo esta desordenado y tenemos que ordenarlo?
En respuesta a David Hidalgo Alvarez

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Alejandro Blanco -
David.

No asumí que cada vez que se inserta una persona al grupo se lo hace en forma ordenada, o sea que esta ordenado.

Saludos

Alejandro B
En respuesta a Alejandro Blanco

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Valeria Tejera Ferreira -

Hola, me aparece este error cuando haciendo la funcion 

void agregarAGrupo(TGrupo& grupo, TPersona persona), al comparar fechas accedo de esta manera -> como dice la imagen. Lo que entiendo por el error es que deberia definir la estructura Persona (struct rep_persona) en persona.h. No entiendo porque deberia hacer eso si para los casos anteriores, cuando realice el modulo persona, esta definicion la hice en persona.cpp. 

Adjunto Error prog2.JPG
En respuesta a Valeria Tejera Ferreira

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Alejandro Blanco -
Valeria.

Para obtener la fecha de nacimineto de una persona tenes que usar la función fechaNacimientoTPersona.

Saludos
Alejandro B
En respuesta a Alejandro Blanco

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Sebastián Valentín Pintos Fernández -
Buenas tardes, en la función agregarAGrupo por lo que entiendo hay que sumarle uno al tope para agregar a la persona nueva, el problema es que al hacer tope++ me sale "segmentation fault" al ejecutar el caso de prueba.
No tengo idea de como resolver eso.
En respuesta a Sebastián Valentín Pintos Fernández

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Alejandro Blanco -
Sebastián.

Sera que no inicializaste el tope y estas queriendo incrementar una variable sin inicializar? Fijate por ese lado.

Saludos
Alejandro B.
En respuesta a Alejandro Blanco

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Santiago Valente Petrone -
Buenas tengo problemas al liberar el grupo. En el caso en el que está vacío tengo problemas en el que aparentemente se liberara el grupo pero el caso no coincide con el make por el siguiente error del grupo1-crear-liberar. Parece ser que pese a que el grupo está vacío, como que aún así elude a ese for (donde esta liberarPersona que la sintaxis me parece que es erronea ya que tengo varios casos con errores por pasar a funciones el grupo->personas[i]) pero no estoy seguro si es eso, aunque el vangrid marca como error la línea 106
En respuesta a Santiago Valente Petrone

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Alejandro Blanco -
Santiago.

Estas manejando mal el array con tope. Recomiendo que repases este tema. El problema esta en liberarTGrupo.

Saludos
Alejandro B
En respuesta a Santiago Valente Petrone

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Federico Bello Perez -
Hola Santiago,
Primero que nada te recuerdo que la tarea es individual. Esto incluye la publicación de fragmentos de código en los foros.

Respondiendo a tu pregunta, por alguna razon estas llamando a liberarTPersona por mas que el grupo esta vacío. Si tenes algún tipo de iteración condicional dentro de liberarTGrupo revisa las condiciones iniciales y los bordes de la iteración

Saludos
En respuesta a Alejandro Blanco

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Tomas Jorge Carrau Giacummo -
buenas, cuando hago el make agregar imprimir tengo un problema que ni siquiera me aparece el persona creada de forma exitosa, simplemente me pone
6a7
>
y nada mas y no tengo problemas en crear grupo entonces no se que puede ser porque el tope lo modifico desde el comienzo del procedimiento, entonces no se me ocurre que puede ser
En respuesta a Alejandro Blanco

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Fernando Javier Acuña Gomez -
Buenos días;
La ejecución de "$ make t-grupo2-agregar-imprimir" da como resultado "Bien".
Por otro lado, "$ ./principal Sin embargo, "$ make t-grupo3-agregarvarios-imprimir" da como resultado un error de memoria que no logro descifrar:
33a34,39
> ==26720== 1,368 (1,296 direct, 72 indirect) bytes in 6 blocks are definitely lost in loss record 2 of 2
> ==26720== at 0x4849013: operator new(unsigned long) (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==26720== by 0x10A6B3: crearTPersona(int, char const*, char*, rep_fecha*) (persona.cpp:19)
> ==26720== by 0x109B4F: main_crearPersona(rep_persona*&, rep_fecha*&) (principal.cpp:244)
> ==26720== by 0x1094D7: main (principal.cpp:123)
> ==26720==

Gracias,
En respuesta a Alejandro Blanco

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Camila Alexandra Machado Montiel -
Buenas cuando implemento grupo2-agregar-imprimir me ocurre esto
1,8c1,26 < 1>El grupo ha sido creado de forma exitosa. < 2>3>Persona creada de forma exitosa. < 4>Se ha agregado la persona al grupo de forma exitosa. < 5>Persona John Doe < Cedula: 1234567 < Fecha de nacimiento: 22/3/2024 < 6>Se ha borrado el grupo en forma exitosa. < 7>Fin.
---
> ==2244== Use of uninitialised value of size 8
> ==2244== at 0x10A805: fechaNacimientoTPersona(rep_persona*) (persona.cpp:72)
> ==2244== by 0x10A972: agregarAGrupo(rep_grupo*&, rep_persona*) (grupo.cpp:35)
> ==2244== by 0x109FEC: main_agregarAGrupo(rep_grupo*&, rep_persona*&) (principal.cpp:316)
> ==2244== by 0x109674: main (principal.cpp:151)
> ==2244==
> ==2244== Invalid read of size 8
> ==2244== at 0x10A805: fechaNacimientoTPersona(rep_persona*) (persona.cpp:72)
> ==2244== by 0x10A972: agregarAGrupo(rep_grupo*&, rep_persona*) (grupo.cpp:35)
> ==2244== by 0x109FEC: main_agregarAGrupo(rep_grupo*&, rep_persona*&) (principal.cpp:316)
> ==2244== by 0x109674: main (principal.cpp:151)
> ==2244== Address 0x8 is not stack'd, malloc'd or (recently) free'd
> ==2244==
> ==2244==
> ==2244== Process terminating with default action of signal 11 (SIGSEGV)
> ==2244== Access not within mapped region at address 0x8
> ==2244== at 0x10A805: fechaNacimientoTPersona(rep_persona*) (persona.cpp:72)
> ==2244== by 0x10A972: agregarAGrupo(rep_grupo*&, rep_persona*) (grupo.cpp:35)
> ==2244== by 0x109FEC: main_agregarAGrupo(rep_grupo*&, rep_persona*&) (principal.cpp:316)
> ==2244== by 0x109674: main (principal.cpp:151)
> ==2244== If you believe this happened as a result of a stack
> ==2244== overflow in your program's main thread (unlikely but
> ==2244== possible), you can try to increase the size of the
> ==2244== main thread stack using the --main-stacksize= flag.
> ==2244== The main thread stack size used in this run was 8388608.
> Segmentation fault
En respuesta a Alejandro Blanco

Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.

de Bruno Sebastián Alvez Da Cruz Martinez -
Buenas, no estoy muy seguro de entender el orden en el cual debería agregar, pues la letra dice de menor a mayor pero cuando ordeno el arreglo de la forma (Persona mas joven,----,Persona mas vieja), estando la más joven en el lugar 0 los test de prueba lo ordenan al contrario. No se si estoy entendiendo algo mal. Dejo el make t-grupo3...:14,25c14,16
< 20>Persona Persona1 Apellido1
< Cedula: 1234567
< Fecha de nacimiento: 1/1/2001
< Persona Persona2 Apellido2
< Cedula: 2345671
< Fecha de nacimiento: 1/1/2002
< Persona Persona3 Apellido3
< Cedula: 3456712
< Fecha de nacimiento: 1/1/2003
< Persona Persona4 Apellido4
< Cedula: 4567123
< Fecha de nacimiento: 1/1/2004
---
> 20>Persona Persona6 Apellido6
> Cedula: 6712345
> Fecha de nacimiento: 1/1/2006
29,31c20,31
< Persona Persona6 Apellido6
< Cedula: 6712345
< Fecha de nacimiento: 1/1/2006
---
> Persona Persona4 Apellido4
> Cedula: 4567123
> Fecha de nacimiento: 1/1/2004
> Persona Persona3 Apellido3
> Cedula: 3456712
> Fecha de nacimiento: 1/1/2003
> Persona Persona2 Apellido2
> Cedula: 2345671
> Fecha de nacimiento: 1/1/2002
> Persona Persona1 Apellido1
> Cedula: 1234567
> Fecha de nacimiento: 1/1/2001