Innanzi tutto ti consiglio di postare la definizione della lista e della struttura elemento per farci capire meglio.
Comunque al momento tu non riordini i componenti della lista. Tu stai riordinando i punteggi assegnati ad ogni candidato. Mi spiego meglio, nel momento in cui effettui lo scambio:
tmp=L.elemento[j].punteggio;
L.elemento[j].punteggio=L.elemento[j+1].punteggio;
L.elemento[j+1].punteggio=tmp;
tu stai scambiando i punteggi. infatti tradotto a parole il tuo codice è il seguente:
- 1) assegna a tmp il valore del punteggio dell'elemento j-esimo della mia lista;
- 2) assegna al punteggio dell'elemento j-esimo della mia lista il valore del punteggio dell'elemento j+1 esimo della mia lista.
- 3) assegna al punteggio dell'elemento j+1 esimo della mia lista il valore di temp.
così ti trovi ad avere gli elementi della lista nello stesso ordine ma col punteggio scambiato, per esempio poni di avere:
candidato 1:
Nome: Marco
Cognome: BlaBla
Anni: 20
Punteggio: 23
candidato 2:
Nome: Saverio
Cognome: Blublu
Anni:22
Punteggio: 27
candidato 3:
Nome: Giuseppe
Cognome: BliBli
Anni: 25
Punteggio: 20
Dopo il tuo algoritmo avrai:
candidato 1:
Nome: Marco
Cognome: BlaBla
Anni: 20
Punteggio: 27
candidato 2:
Nome: Saverio
Cognome: Blublu
Anni:22
Punteggio: 23
candidato 3:
Nome: Giuseppe
Cognome: BliBli
Anni: 25
Punteggio: 20
Il che non è quello che vuoi.
Devi scambiare gli elementi della lista in modo da avere:
candidato 1:
Nome: Saverio
Cognome: Blublu
Anni:22
Punteggio: 27
candidato 2:
Nome: Marco
Cognome: BlaBla
Anni: 20
Punteggio: 23
candidato 3:
Nome: Giuseppe
Cognome: BliBli
Anni: 25
Punteggio: 20
Quindi tradotto a parole l'algoritmo che devi applicare è, ponendo di avere tmp dichiarato in modo corretto:
- 1)assegna a tmp il l'elemento j esimo della mia lista
- 2)metti al posto j esimo della mia lista la struttura che sta al posto j+1 esimo
- 3)metti al posto j+1 esimo della mia lista la struttura che sta nella variabile tmp