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

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

de Federico Rivero -
Número de respuestas: 41

Preguntas sobre la parte 2

En respuesta a Federico Rivero

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

de Lautaro Gabriel Piedra Vallejo -
Buenas, en el void agregarAGrupo al momento de ordenar la persona en el grupo según fecha de nacimiento invoco a compararTFechas, y al compilar me arroja el siguiente error:invalid use of incomplete type ‘struct rep_persona’. Ya revisé la struct rep_persona y no veo nada raro, además los casos de prueba del módulo persona no arrojaron ningún error. Alguna idea de qué puede ser?
En respuesta a Lautaro Gabriel Piedra Vallejo

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

de Manuel Freire -
Hola,

Probablemente estés queriendo acceder a la representación de persona en el módulo grupo y por eso te esté dando ese error. Acordate que desde fuera del módulo solamente se puede acceder a las funciones y constantes especificadas en el header (.h).

Saludos!
Manuel
En respuesta a Manuel Freire

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

de Melina Noelia Toribio Conde -
Buen dia. Tengo el mismo problema, y no entiendo como resolverlo ya que el grupo.h ya incluye a persona.h.
Me podrían ayudar?
En respuesta a Melina Noelia Toribio Conde

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

de Federico Rivero -
Hola,

Lo que pasa es que como bien dicen, grupo.h incluye a persona.h únicamente, por lo tanto a lo único que grupo tiene acceso es a las funciones que están declaradas en persona.h y los tipos que están ahí. No puede acceder directamente a los elementos dentro del struct persona porque estos están declarados en persona.cpp y no en persona.h. Por lo tanto deben resolver la implementación de grupo valiéndose de las funciones declaradas en persona.h.

Saludos,
Federico
En respuesta a Federico Rivero

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

de Laura Perez Mustelier -

Buenas noches!!

Por qué me aparece este error después de agregar a 3 personas al grupo?

Error Violación de segmento

En respuesta a Laura Perez Mustelier

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

de Manuel Freire -
Hola,

Lo que mostrás parece ser un problema de implementación de la función de agregarAGrupo. Lo más probable es que al ingresar la tercer persona estés entrando en un caso que los dos agregar anteriores no hacen. Es difícil darte indicaciones particulares a partir de la salida de consola pero te recomiendo que hagas el flujo de ejecución en un papel y capaz ahí te das cuenta cuál es el caso que no estás contemplando.

Saludos!
Manuel
En respuesta a Federico Rivero

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

de Matias Sosa Pan -
Buenas, al hacer "make t-grupo2-agregar-imprimir" me sale el siguiente error y no logro encontrar una solución:

> ==7723== Use of uninitialised value of size 8
> ==7723== at 0x10A7F8: fechaNacimientoTPersona(rep_persona*) (persona.cpp:71)
> ==7723== by 0x10A97C: agregarAGrupo(rep_grupo*&, rep_persona*) (grupo.cpp:37)
> ==7723== by 0x109FEC: main_agregarAGrupo(rep_grupo*&, rep_persona*&) (principal.cpp:316)
> ==7723== by 0x109674: main (principal.cpp:151)
> ==7723==
> ==7723== Invalid read of size 8
> ==7723== at 0x10A7F8: fechaNacimientoTPersona(rep_persona*) (persona.cpp:71)
> ==7723== by 0x10A97C: agregarAGrupo(rep_grupo*&, rep_persona*) (grupo.cpp:37)
> ==7723== by 0x109FEC: main_agregarAGrupo(rep_grupo*&, rep_persona*&) (principal.cpp:316)
> ==7723== by 0x109674: main (principal.cpp:151)
> ==7723== Address 0xd0 is not stack'd, malloc'd or (recently) free'd
> ==7723==
> ==7723==
> ==7723== Process terminating with default action of signal 11 (SIGSEGV)
> ==7723== Access not within mapped region at address 0xD0
> ==7723== at 0x10A7F8: fechaNacimientoTPersona(rep_persona*) (persona.cpp:71)
> ==7723== by 0x10A97C: agregarAGrupo(rep_grupo*&, rep_persona*) (grupo.cpp:37)
> ==7723== by 0x109FEC: main_agregarAGrupo(rep_grupo*&, rep_persona*&) (principal.cpp:316)
> ==7723== by 0x109674: main (principal.cpp:151)
> ==7723== If you believe this happened as a result of a stack
> ==7723== overflow in your program's main thread (unlikely but
> ==7723== possible), you can try to increase the size of the
> ==7723== main thread stack using the --main-stacksize= flag.
> ==7723== The main thread stack size used in this run was 8388608.
> timeout: la orden monitorizada ha volcado un 'core'
> Segmentation fault
En respuesta a Matias Sosa Pan

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

de Agustina Cosentino Pérez -
Me está pasando lo mismo y no logro encontrar el error, pudiste solucionarlo?
En respuesta a Agustina Cosentino Pérez

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

de Matias Sosa Pan -

Hola, pude solucionar.
Me parece que tenía un problema en la función de agregar personas a un grupo.
Tenía un error en el algoritmo al mover personas dentro de un grupo.

En respuesta a Federico Rivero

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

de Alejandro Carlos Pascual Carrasco -
Hola, buen día.

En la especificación de la función agregarAGrupo no se especifica cómo debe comportarse la función ante el intento de agregar a una persona con un número de cédula igual a la de alguien que ya pertenece al grupo. En este caso, ¿se puede asumir que la función no tiene efecto alguno?

Desde ya, muchas gracias.
En respuesta a Alejandro Carlos Pascual Carrasco

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

de Santiago Noel Pombo Fontes -
Hola buenas, estoy teniendo un problema con liberarTGrupo, por lo que entendí el problema me lo esta dando liberarTFecha, pero los casos de test donde se usa esta función están todos bien, así que no comprendo como solucionar esto.
Adjunto Ubuntu 12_03_2024 16_28_40.png
En respuesta a Santiago Noel Pombo Fontes

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

de Fã‰Lix Michel Jure Altuna -

Buenas!

A mi me pasaba lo mismo y me volví loco mirando la función de liberación de la fecha,pero el error estaba en otro lado..revisá el algoritmo que efectivamente borra a las personas del grupo,mi error estaba en que empezaba fuera de un rango válido. 

En respuesta a Federico Rivero

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

de Francisco Scarrone Braz Da Luz -
Buenas estoy confundido en el orden de agregarAgrupo, cuando pide de menor a mayor hace referencia a las edades o al año? por ej: que persona iria antes en el grupo, una con nacimiento en 2002 o una persona con nacimiento en 2010

Luego a la hora de imprimir doy por entendido que el de 2002 debe ir antes que el de 2005 ya que es en orden cronologico.
En respuesta a Federico Rivero

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

de Ezequiel Gadea Lucas -

Buenas, cuando ejecuto el test grupo2-agregar-imprimir valgrind me tira que tengo una fuga de memoria en la funcion crearTPersona, pero el test persona1-crear-imprimirnombre-librerar esta bien.


En respuesta a Ezequiel Gadea Lucas

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

de Fã‰Lix Michel Jure Altuna -
Yo recién pude reparar un error muy similar(si no el mismo) en la misma función,en mi caso era un problema de rangos. Comprobá eso,cuando recorres las estructuras (sobretodo del Módulo grupo) fijate los casos particulares en las puntas. Espero te sirva!
En respuesta a Federico Rivero

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

de Valentín Barrera Fourcade -
Buenas, al realizar el caso de prueba grupo3-agregarvarios-imprimir. con make t- ... tengo esta salida:

Al ejecutar el caso manualmente, se rompe en el comando 7(2do agregarAGrupo). Entiendo que el problema está en esa función, pero lo que no me cierra es que la salida del programa (con el make) antes de mostrar los errores es idéntica a la salida esperada.
En respuesta a Valentín Barrera Fourcade

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

de Federico Rivero -
Hola Valentín!

Llega a imprimir algo? La escritura en archivo no es 100% secuencial. Es normal que si el programa da error y termina (como ese segmentation fault), no llegue a escribir en el archivo cosas que se ejecutaron algunas instrucciones antes con printf (los detalles del por qué lo vas a ver en Sistemas Operativos, 5to semestre).'

Saludos,
Federico
En respuesta a Federico Rivero

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

de Valentín Barrera Fourcade -
Gracias Federico por tu respuesta tan rapida, por suerte ya pude solucionar el error. No se si entendi del todo tu respuesta.
Mi error estaba efectivamente en que accedía a indices no inicializados en la función agregarAGrupo... lo que me sorprendió fue que el caso de prueba con el make t-... daba los resultados esperados aun cuando accedía varias veces a estos indices sin inicializar.

Saludos, Valentin



En respuesta a Federico Rivero

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

de Lautaro Gabriel Piedra Vallejo -
Buenas, no me queda claro a qué hace referencia este error de memoria y qué tiene que ver crearPersona con el test que se ejecuta, ya que en los test del módulo persona no me arrojó ningún error.Error mencionado
En respuesta a Lautaro Gabriel Piedra Vallejo

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

de Federico Rivero -

Hola Lautaro,

Estás liberando la memoria de la persona en la función liberarTGrupo? Fijate si puede venir por ahí el problema.

Saludos,

        Federico

En respuesta a Federico Rivero

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

de Yennifer Gutierrez Machado -
Buenas, en el caso de prueba de grupo1-crear-liberar estoy teniendo esta salida y no estaría entendiendo a que se debe.
Adjunto Captura desde 2024-03-17 10-31-45.png
En respuesta a Yennifer Gutierrez Machado

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

de Santiago Bueno Fernández -

A mi me habia pasado algo similar y era porque no habia inicializado bien el struct despues de hacer el new para el grupo

En respuesta a Federico Rivero

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

de Martin Gonzalez Blasco -
Buenas, con los casos de prueba grupo1-crear-liberar me salta el siguiente error:

0a1,5
> ==95989== Conditional jump or move depends on uninitialised value(s)
> ==95989== at 0x40261F: liberarTGrupo(rep_grupo*&) (grupo.cpp:72)
> ==95989== by 0x401C99: main_liberarGrupo(rep_grupo*&) (principal.cpp:328)
> ==95989== by 0x401531: main (principal.cpp:157)
> ==95989==

Al hacerlo manualmente sin valgrind no me salta ningun error. Cuando lo hago con valgrind si me salta ese mismo error en el paso liberarGrupo, sin embargo la memoria esta perfecta. Por lo que entiendo estoy usando una variable no inicializada, como podria ser querer acceder a un campo que es NULL. Sin embargo ya hice todos los if necesarios para no estar accediendo a ningun NULL o un arreglo con tope 0 (es decir, sin nada). Y en funcion de esto ultimo, toda la iteracion la estoy haciendo sobre valores que estan definidos

Gracias de antemano
En respuesta a Martin Gonzalez Blasco

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

de Pablo Andres Balliva Costa -

El valgrind te dice que el problema está en grupo.cpp:72, o sea, en la línea 72 de ese archivo. Fijate que puntero estás desreferenciando ahí (grupo->algo) y vas a saber exactamente cual es la memoria que no inicializaste. (Ojo que puntero sin inicializar no es lo mismo que puntero NULL.) Es probable que el problema se genere en otro archivo.

En respuesta a Federico Rivero

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

de Mateo Estoup Peirano -
Buen día, cuando ejecutó el caso de prueba 6 me falla el programa luego de agregar dos personas con la misma fecha. Es decir, con el siguiente a estas dos. Me fijé y creo que estoy usando de manera correcta la función esMasJoven, no se donde podría estar el problema.
Gracias
En respuesta a Federico Rivero

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

de Tomás Imperial García -
Hola creo que ya se pregunto en el foro pero no hay respuesta, en la función agregarGrupo se pide que el orden en el grupo sea de menor a mayor las personas, o de menor a mayor las fechas? Me confunde el paréntesis que aclara de menor a mayor, después de decir por fecha de nacimiento. 👍🏻👋🏻
En respuesta a Tomás Imperial García

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

de Martin Alejandro Villanueva Barreiro -
Buenas noches, tengo la misma duda que el compañero.
En respuesta a Martin Alejandro Villanueva Barreiro

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

de Federico Rivero -
Hola!

Disculpen si esto no estaba respondido. Se deben ordenar de menor a mayor las fechas, es decir, los más viejos (mayor edad) primero, los más jovenes después. Ante dudas similares y sobre todo para no trancarse, traten de usar las salidas de los archivos de prueba para deducir este tipo de respuestas!

Saludos,
Federico
En respuesta a Federico Rivero

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

de María Belén Fernández Briano -
Hola buenas, estuve probando el make t-grupo3-agregarvarios-imprimir y solo me está imprimiendo a la persona 1, no me marca ningún error como tal y la verdad ya intenté mil veces y nada. No sé si hay alguna forma de comunicarme con algún profesor porque no puedo poner el código acá, pero no me estaría dando cuenta de qué está mal.
Muchas gracias!!!
En respuesta a Federico Rivero

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

de Luka Federico Miguez Apai -
Buenas, cuando ejecuto el caso de prueba agregarAGrupo me aparece este error y no sé como solucionarlo, por qué puede ser?
Gracias.
Adjunto Screen Shot 2024-03-22 at 08.30.46.png
En respuesta a Luka Federico Miguez Apai

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

de Federico Rivero -
Hola Lucía,

Probablemente la variable grupo sea NULL. Fijate si tenés bien implementado el constructor!

(Y sí, el mensaje 'el grupo ha sido creado de forma exitosa es un poco confuso y optimista. Asume que 'crearGrupo' funciona correctamente)

Saludos,
Federico
En respuesta a Federico Rivero

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

de Luka Federico Miguez Apai -
Hola, gracias por la respuesta
El problema es que al crear el grupo por lo que entiendo sí o sí lo tengo que dejar apuntando a algo, por eso está apuntando a NULL (porque como está vacío al crearse todavía no apunta a ninguna persona).

Gracias
En respuesta a Luka Federico Miguez Apai

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

de Federico Rivero -
Ok, está bien. Eso no está mal pero por la forma que está armado el principal no lo vas a poder dejar así. Vas a tener que apuntarlo a algo que no esa NULL para este caso. Pero quiero recalcar que no es que tu implementación esté mal. El principal espera que luego de creado no sea NULL, lo cual en realidad es un problema del principal, porque como bien decís la implementación vacía podría ser simplemente un puntero a NULL.

Es decir, el principal no sigue bien los lineamientos del curso :)

Saludos,
Federico
En respuesta a Federico Rivero

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

de Rafael Sotuyo Milicua -
Hola buenas, me salta un error al hacer el test de grupo1-agregar-imprimir, me pone que falla el assertion?