You are permitted, and encouraged, to work together on these problems, provided that every contributor understands how the complete solution was found. Put the names of all contributors into comments at the top of your C file: /* assignment 11 */ /* Joe Bloggs */ /* Alice Smith */ Your solutions are due Friday 16 November at 17:00. Send each C file in a separate email message to djb-275-hw@cr.yp.to: mail djb-275-hw@cr.yp.to < ex11.c mail djb-275-hw@cr.yp.to < ex12.c You are permitted to use standard C functions in these problems. These problems work with the structure struct da { double *x; int xspace; int xlen; } ; typedef struct da da; which is either unallocated, meaning that x and xspace and xlen are 0, or allocated, meaning that x points to a dynamically allocated array of xspace doubles, of which the first xlen are being used. 11. Write a function void da_free(da *d) that, when given the location of a da variable, unallocates the variable, freeing the dynamically allocated array. If the variable is already unallocated, leave it alone. 12. Write functions int da_store(da *d,char *fn) and int da_load(da *d,char *fn) that copy the doubles in d to and from a file named fn. The functions must return 1 if they succeed, 0 if they fail. They must not leak memory: they must free all resources they allocate, except for the dynamically allocated array that d->x points to.