Ordinamento vettore C++

StarFish

Utente Attivo
7 Mar 2012
37
0
0
ciao a tutti, sto cercando di far funzionare una funzione per l'ordinamento di un vettore per l'anno di edizione di un elenco di libri, ma mi si presenta un problema: esegue lo scambio dei valori solamente una volta. Qualcuno sa dirmi il perché?
Codice:
	// 7) FUNZIONE PER ORDINARE IL VETTORE PER L'ANNO DI EDIZIONE
void ordina(libro v[])
{
    cout << "Il vettore e' stato ordinato per l'anno di edizione" << endl;
    for (int i=0; i<contalibri-1; i++)
    {

        for(int j=i+1; j<contalibri; j++)
        {
            if(v[i].anno > v[i+1].anno)
            {
                int temp = v[i].anno;
                v[i].anno = v[i+1].anno;
                v[i+1].anno = temp;
            
                string t = v[i].titolo;
                v[i].titolo = v[i+i].titolo;
                v[i+1].titolo = t;
            
                string temp1 = v[i].autore;
                v[i].autore = v[i+i].autore;
                v[i+1].autore = temp1;
            }
        }
    }
}
Grazie a tutti
 
potrei sbagliarmi, ma per fare l'ordinamento di scambio si dovrebbe fare
Codice:
for(i=0;i < n-1;i++)
     for(j=i+1;j < n;j++) 
          if(T[j] < T[i]){//scambio 
               x=T[j]; 
               T[j]=T[i]; 
               T[i]=x; 
     } // fine if

quindi tu dovresti provare

Codice:
for (int i=0; i<contalibri-1; i++)
    {

        for(int j=i+1; j<contalibri; j++)
        {
            if(v[i].anno > v[i+1].anno)
            {
                int temp = v[i].anno;
                v[i].anno = v[j].anno;
                v[j].anno = temp;
            //.....etc..
 
Ultima modifica di un moderatore:
Codice:
            if(v[i].anno > v[i+1].anno)
            {
                int temp = v[i].anno;
                v[i].anno = v[i+1].anno;
                v[i+1].anno = temp;

dovresti cambiare TUTTI gli "i+1" con "j" esclusa la linea del for
Codice:
            if(v[i].anno > v[j].anno)
            {
                int temp = v[i].anno;
                v[i].anno = v[j].anno;
                v[j].anno = temp;
ciao
Marino
 

Discussioni simili