Gente, una sugerencia respecto al obligatorio 3, antes que nada, si no lo tienen claro, por favor repasen TODO el capítulo de punteros (el cap 5), son apenas 25 páginas.
Segundo, vayan probando con ejemplos básicos y construyan sobre eso para intentar resolver lo que se pide en el obligatorio, no intenten atacarlo de entrada sin haber hecho ejercicios de práctico o entendido los ejemplos del libro e implementar lo que sea que necesiten para ir entendiendo los conceptos. Y por favor depuren, para ir viendo que pasa con las asignaciones de punteros a punteros, o de los malloc. Miren los valores de las variables antes y después de asignar los punteros, etc.
Recuerden que en C todas las variables se pasan por valor, por lo cual si reciben en una función un puntero, por más que sea un puntero, si asignan esa variable a un valor, no están asignando el puntero que pasaron. Para modificar el valor de lo apuntado por el puntero deben modificar lo apuntado por el (como hacer esto está en el capítulo 5)..
Con todo claro, el obligatorio se resuelve en una tarde, pero las cosas se complican si intentan hacer el camino inverso. Arrancar empezando a resolver el obligatorio sin tener claros los conceptos primero.
Saludos
Andrés.