Código:
menu_adicionar (&et[10]);
Al mandar esto le indicas al compilador que envias el elemento 10, el cual no existe, tienes elementos del 0 al 9, recuerda que la definicion de los arrays es de 0 a n-1
Código:
void menu_adicionar (struct etapa *et[10])
No es necesario que le mandes el tamaño del array
Código:
void menu_adicionar (struct etapa *et[])
Algo similar esta pasando con las otras funciones
Es de un vistazo lo que veo...