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.
l'array viene caricato da file e passato in memoria.codice: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 ]; } } } }
Il file è così scritto:
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è.codice:Pinco Pallino 18 Tizio Caio 27 Semprionio Sempronis 25 Ciccio Palla 23
Qualcuno mi saprebbe aiutare ?
P.s. Sto utilizzando dev c++ come ide.
Grazie.
![]()


Rispondi quotando
