.
2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
src/../include/persona.h:21:16: note: forward declaration of ‘struct rep_persona’
21 | typedef struct rep_persona *TPersona;
| ^~~~~~~~~~~
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
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
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
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!
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
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
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
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
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
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
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
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
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
Saludos Santiago
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
muchas gracias desde ya.
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
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
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
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.
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
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
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
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==
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
No estas liberando bien la memoria. Revisa la implementación de liberarTGrupo
Saludos
Alejandro B
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
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
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
Hola, me aparece este error cuando haciendo la funcion
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
Para obtener la fecha de nacimineto de una persona tenes que usar la función fechaNacimientoTPersona.
Saludos
Alejandro B
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
No tengo idea de como resolver eso.
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
Sera que no inicializaste el tope y estas queriendo incrementar una variable sin inicializar? Fijate por ese lado.
Saludos
Alejandro B.
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
Estas manejando mal el array con tope. Recomiendo que repases este tema. El problema esta en liberarTGrupo.
Saludos
Alejandro B
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
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
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
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
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
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,
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
me pasa exactamente lo mismo
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
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
Re: 2. Implementar las funciones crearTGrupo, agregarAGrupo, imprimirTGrupo y liberarTGrupo.
< 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