Ciao a tutti qualcuno mi saprebbe illuminare su dove sbaglio: Ho un array di record di alunni formato dai seguenti sotto-campi: [nome],[cognome],[voto] io li devo ordinare in base al voto ricevuto dal più alto al più basso.
void ordinaRecord( alunni &a, alunni h, int r )
{
int register i, j;
for( i = 0; i < r-1; i++ )
{
for( j = 1; j < r; j++ )
{
if( a.voto[ i ] < a.voto[ j ] )
{
strcpy( h.nome[ 0 ], a.nome[ j ] );
strcpy( h.cognome[ 0 ], a.cognome[ j ] );
h.voto[ 0 ] = a.voto[ j ];
strcpy( a.nome[ j ], a.nome[ i ] );
strcpy( a.cognome[ j ], a.cognome[ i ] );
a.voto[ j ] = a.voto[ i ];
strcpy( a.nome[ i ], h.nome[ 0 ] );
strcpy( a.cognome[ i ], h.cognome[ 0 ] );
a.voto[ i ] = h.voto[ 0 ];
}
}
}
}
l'array viene caricato da file e passato in memoria.
Il file è così scritto:
Pinco Pallino 18
Tizio Caio 27
Semprionio Sempronis 25
Ciccio Palla 23
Il codice viene eseguito però mi ordina solo il primo con il secondo e non itera il bubble sort per gli altri elementi dell'array di record e non capisco il perchè.
Qualcuno mi saprebbe aiutare ?
P.s. Sto utilizzando dev c++ come ide.
Grazie.