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
 

clausius

Nuovo Utente
31 Ago 2014
10
0
1
nerviano
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:

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
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
Autore Titolo Forum Risposte Data
E Ordinamento file decrescente PHP 5
L risolto visualizzazione e ordinamento dati PHP 1
D [ASP] ordinamento query Classic ASP 2
P [PHP] Ordinamento DB multitabellare PHP 2
D Mysql ordinamento risultati MySQL 4
P problema di ordinamento MySQL 17
M ordinamento array file txt in base al contenuto PHP 1
M Problema ordinamento array PHP 4
felino Ordinamento dinamico degli elementi visualizzati PHP 6
R ordinamento immagini con drag and drop e memorizzazione db PHP 1
Monital Rinominare le chiavi del multiarray dopo il suo ordinamento PHP 0
M Ordinamento Array PHP 3
E ordinamento array multidimensionale per un valore ottenuto tramite una funzione PHP 1
E JQRY + XML piccola rubrica con ordinamento e raggruppamento jQuery 1
P Sort di un array da ordinamento fisso PHP 4
D Ordinamento div HTML e CSS 12
A ordinamento PHP o MySql PHP 2
Monital Ordinamento colonne PHP 40
H Ordinamento dati da xml Flash 0
H Piccola applicazione per News con Php, Xml e Flash: problema ordinamento. XML 0
N Ordinamento in PHP PHP 5
Z query sql e script php per ordinamento dati tabella PHP 2
P Ordinamento colonne PHP 2
G Miglior ordinamento delle voci in un file css? HTML e CSS 3
M URGENTE: ORDINAMENTO LESSICOGRAFICO STRINGHE CON MERGESORT ricorsivo IN C (non C++) C/C++ 1
N Ordinamento Dati Database Classic ASP 2
C Inserire i dati in un vettore senza ammettere duplicati C/C++ 0
V risultato di un vettore in una finestra Java 5
neo996sps [PHP + JS] vettore generato con PHP PHP 12
O Punto di equilibrio di un vettore [C] .NET Framework 6
F stampare 3 elementi maggiori di un vettore in input Java 5
E stampa vettore e altro PHP 0
K 7 e mezzo cn vettore Programmazione 8
W Passare un vettore con querystring PHP 6
M Come sommare elementi di un vettore in Visual basic Visual Basic 1

Discussioni simili