Algorithme de tri en c++, mais ...

mohboa Messages postés 9 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 25 novembre 2008 - 21 nov. 2008 à 14:32
mohboa Messages postés 9 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 25 novembre 2008 - 22 nov. 2008 à 23:12
les derniers jour j'ai travail sur un projet de tri par decalage dans un tableau et j'ai reussi d'ecrir un code sans errore en dev c++  mai il ma donne une resultat faut plzz  y a quelkun peut corrigée mon code  ( je croi le faute au niveux de decalage )

voila mon code :

#include
 
  using namespace std;

class tableau
  { 
      int note[10];
      int noteT[10];
    public:
          
           void saisir()
           {
                for(int i=0;i<10;i++)
                {
                        cout<<"Donner Note :" ;
                        cin>>note[i];
                }
           }
          void afficher()
            {
                 for(int i=0;i<10;i++)
                   cout<<"Note :"<<noteT[i]<<endl ;
            }                    
    
         void Trier()
           {
               int min=note[0];
                   noteT[0]=min;
                   int nb=1; // nombre d'element dans noteT
                  
               for(int i=1,j=0 ; i<10 ; i++)
                 {
                       if(note[i]<noteT[j])
                         
                           decalage(noteT,j,nb);
                       
                        noteT[j]=note[i];
                        nb++;
                 }
           }
void  decalage(int T[] , int deb , int n)
     {
             for(int i=n ; i>deb ; i--)
              T[i]=T[i-1];
}
};  

int main()
{
    tableau obj;
    obj.saisir();
    obj.Trier();
    obj.afficher();                                     

  system("pause");
  return 0;


plzz fait la correction ?

2 réponses

cs_Tibabou Messages postés 129 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 7 juillet 2012
22 nov. 2008 à 01:07
Salut,

Remarques préliminaires :

- tu as une classe : pourquoi passer en paramètre "noteT" à decalage() vu que c'est un attribut ?
- int min ... pourquoi pas mais où l'utilises-tu ? autant faire noteT[0]=note[0], non ?
- j=0... ok mais où le modifies-tu ? j reste à 0 tout le long de ta boucle
- nb++ dans la boucle for : tu l'incrémentes à chaque itération donc tu as tout le temps i=nb

Mais pour te dire précisément ce qui débloque :

Tu ne décales QUE quand note[i]<noteT[0] donc admettons que tu décales seulement 4 fois dans ta boucle, les valeurs noteT[4] à noteT[9] ne sont PAS initialisées. Donc à l'affichage tu as ce qui est dans RAM à ces adresses.

Tibabou
0
mohboa Messages postés 9 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 25 novembre 2008
22 nov. 2008 à 23:12
ok merci pour la reponse  mais pour


              1;  je met noteT[i] en la foncion de decalage c'est la 2eme tableau trier et je met po pointure je travail sur    noteT[i]

              2: pour int min moi je travail  avec cet methode moi je crier 2eme tableau  et je cherche en 1er tableux ala min et apres je le copier dans la 2 eme


 


mai le problem je croi dans la boucle de decalage


 


y a queku peu corigé le
0
Rejoignez-nous