Salve a tutti. Ennesimo problema con le liste. Poco tempo fa avevo avuto un problema simile e lo riuscii a risolvere grazie a voi. Lì si trattava di cercare il parlamentare con il voto più alto, però era differente perchè lì il confronto lo dovevo fare tra tutti gli elementi della lista, qui solo tra alcuni, poichè devo cercare in una lista l'esame sostenuto con un dato professore, con il voto più alto.
Ho provato a scrivere questa funzione, ma non va, anche se non da errori di alcun tipo.
Mi esce scritto "Il voto più alto lo hai preso all'esame di con 162727273 (sfilza di numeri a caso)". Non mi stampa il nome dell'esame e come voto mi stampa una riga di numeri che non so da dove escono.
codice:
TNode* esame_prof(TList list, char prof[]){
TNode* max;
if(list==NULL){
return NULL;
}
while(list!=NULL){
if((strcmp(list->info.satellite.docente, prof)==0) && list->info.satellite.voto > max->info.satellite.voto){
max=list;
list=list->link;
}
list=list->link;
}
return max;
}
Credo che il problema sia in questa linea di codice:
codice:
list->info.satellite.voto > max->info.satellite.voto
Dato che max non ha un valore (e non posso porlo uguale a list, perchè non so se il primo valore della lista è un esame sostenuto con quel professore). Ho provato inizializzando max a NULL, ma va in crash
Come posso risolvere?