2012-10-29 3 views
0

J'essaie d'implémenter un tri à bulles avec des pointeurs compacts. Le genre semble trier que les deux premiers et échoue lorsque vous essayez d'utiliser le pilote de DisplayValues ​​fourni par l'enseignantC++ trier des bulles pointeurs compacts

float *Sort(float *first, size_t elements) 
{ 
    { 
     for (didSwap = 0, current = first, next = first + 1; current < last; ++current, ++next) 
     { 
       didSwap = 1; 
      } 
     } 
     --last; 
    } 
    while (didSwap); 

    return first; 
} 
+0

Il semble que le test et le tri utilisent des directions de tri différentes. Cela dit, que diable sont les "pointeurs compacts" et "les deux premiers"? Surtout cette question n'a aucun sens. –

+1

Maintenant, laissez-moi deviner, je pense que votre professeur était un programmeur C avant d'apprendre le minimum C++ possible, il pourrait s'en tirer avec. Je suis sûr que votre classe est très bonne, mais s'il vous plaît ne pensez pas que vous apprenez le C++ ici. – john

+1

'while (didSwap);' - intentionnel? – Damon

Répondre

1

Il est assez simple, la routine de professeurs attend le tableau en ordre décroissant. Votre code me semble correct mais il est trié par ordre croissant.

BTW votre professeur a un malentendu sur la façon dont fonctionne. Il doit être

cout << setiosflags(ios_base::fixed); 

pour définir les indicateurs sur le flux cout. Chaque flux a ses propres drapeaux, votre professeur semble avoir l'impression qu'il y a un ensemble global de drapeaux. Même erreur pour resetiosflags.

0

Ne devrait-il pas y avoir un «do» pour faire un bloc «do {...} while?

float *Sort(float *first, size_t elements) 
{ 
    do 
    { 
     for (didSwap = 0, current = first, next = first + 1; current < last; ++current, ++next) 
     { 
      didSwap = 1; 
     } 

     --last; 
    } 
    while (didSwap); 
}