ma infatti non ho lasciato l'esercizio al forum, io l'ho fatto tutto XD non ho detto di darmi la soluzione e baci e abbracci ma speravo di arrivarci con voi.
Comunque ti ringrazio della risposta e pongo meglio il mio problema
la traccia dice che l'utente può trovare lo studente con più assenze e stamparne il nome ed il cognome
Tutto questo lo devo fare usando l'algoritmo divide et impera che ho postato nel primo post.
Nel mio programma ho usato quell'algoritmo e funziona benissimo.
Eccolo qui
codice:
int trova_assenze_max(Studente studenti, int n)
{
//Programmazione ricorsiva per l'algoritmo divide et impera di massimo degli elementi di un array
int mediano;
//Soluzione del caso base
if(n == 1)
return studenti[0].tot_assenze;
else
{
//Autoattivazioni
mediano = (n-1)/2;
/*la funziona richiama se stessa fino ad arrivare alla soluzione base e
risolve tutte le chiamate precedentemente messe in pausa*/
return max_tot_assenze(trova_assenze_max(studenti,mediano+1), trova_assenze_max(studenti+mediano+1,n-mediano-1));
}
}
int max_tot_assenze(int x, int y)
{
/*Ritorna il massimo tra due elementi che appartengono al caso base
presente nella funzione trova_assenze_max*/
if(x>y)
return x;
else
return y;
}
Questo codice però trova e ritorna soltanto il numero massimo delle assenze tra tutti e 10 gli studenti, non mi da alcuna informazione su chi è lo studente e quindi non riesco a stampare il nome ed il cognome dello studente
Ho modificato più volte il codice di questa funzione, cercando di salvare l'indice dello studente. Ho provato a farla diventare una procedura, ma neanche così ci sono riuscito(sarà che sono inesperto? sicuramente), la verità è che io ho ben compreso il funzionamento dell'algoritmo divide et impera nella programmazione ricorsiva ma alla fine non fa altro che confondermi.
L'unica soluzione che ho trovato (c'ho pensato solo adesso) è di fare un ulteriore ricerca, stampando tutti gli studenti che hanno il valore delle assenze uguale a quello ritornato dalla function trova_assenze_max. Così facendo risolverei anche il problema che possono esserci più studenti con le stesse assenze e renderli noti tutti e non soltanto uno di loro.
Ma questa soluzione non è un pò un raggiro nei confronti nella traccia?