Va bene.
Per una mia preferenza, chiamo la struttura Ritorno:
typedef struct {
double minimo;
double media;
} Ritorno;
La prima possibilità è passare alla funzione un parametro di tipo Ritorno, per indirizzo, e fare in modo che la funzione "compili" i campi della struttura come di dovere. Non serve restituire niente. Il prototipo:
void Media_Minimo( double *i_v, int i_dim, Ritorno *o_esito );
La chiamata a questa funzione è del tipo...
Ritorno media_e_minimo; // dichiaro la struttura
// faccio quel che devo fare...
// passo la struttura alla funzione, per indirizzo
Media_Minimo( vett, dim, &media_e_minimo );
Una seconda possibilità è
non passare la struttura alla funzione, ma fare in modo che sia la funzione a restituire una struttura di tipo Ritorno. Il prototipo:
Ritorno Media_Minimo( double *i_v, int i_dim );
La chiamata a questa funzione è del tipo...
Ritorno media_e_minimo;
// faccio quel che devo fare...
// "ricevo" la struttura come valore di ritorno
media_e_minimo = Media_Minimo( vett, dim );