Tri d'un tableau

narvaline Messages postés 10 Statut Membre -  
Nabla's Messages postés 20731 Statut Contributeur -
Bonjour,
salut à tous, je suis débutante en C j'essai de faire une fonction ki tri un tableau mais elle marche pas
voila la fonction ke j'ai ecrite:

void tri(int table[], int taille)
{
int i,j,temp,min;

for(i=0;i<taille-1;i++)
{
min=table[i];
for(j=i;j<taille;j++)
{
if(table[j]<min)
min=table[j];
}
temp=min;
min=table[i];
table[i]=temp;
}

}

et voici le main() j'y ai mis un tableau de taille 5:

int main()
{
int tab[5]={9,5,10,3,1};
tri(tab,5);
affichetable(tab,5);//une autre fonction ki affiche le tableau apres ke tri (histoire de verifier)
return 0;
}

le problème c ke quand j'affiche le tableau tous les elements sont 1,1,1,1,1.
je ne comprends pas pourkoi
est ce ke qq1 peut m'expliquer??
merci à vous
A voir également:

3 réponses

watou Messages postés 241 Statut Membre 28
 
essaie ceci :
void tri(int table[], int taille) 
{ 
   int i,j,temp,min; 
   for(i=0 ; i < taille-1 ; i++) 
   { 
     min = i ;               // min est l'indice du minimum !!
     for(j = i + 1;j < taille;j++)     // chercher l'indice du minimum
     { 
        if(table[j] < table[min]) 
           min = j ; 
     } 
                          // permutation des deux éléments du tableau !!
     temp = table[min];      
     table[min]=table[i]; 
     table[i]=temp; 
   } 
}
1
narvaline Messages postés 10 Statut Membre
 
salut watou
j'ai essayé ce ke tu m'as dis et ça à marché, y fallait permuter les positions et non pas les éléments eux mm, c'est désormais gravé dans ma memoire!
merci d m'avoir ouvert les yeux sur ma connerie
0
mi_fa Messages postés 9 Statut Membre 1
 
salut, il faut aussi avoir l'habitude d'utiliser des variables parlant (exemple: position à la place de i ), et des commentaires aussi; ca aide à comprendre ton code.
1
Nabla's Messages postés 20731 Statut Contributeur 3 194
 
entièrement d'accord. Ca m'est arrivé plein de fois de relire un vieux code fait par mes soins: quand t'as pas commenté, tu comprends plus ce que t'as fait quelques mois auparavant !
0
Zempachi Messages postés 7572 Statut Contributeur 906
 
C'est normal car tu effectues un passage de paramètre par valeur et non par variable:
http://www.greyc.ensicaen.fr/ensicaen/CPP/x1659.html
https://www.ltam.lu/cours-c/prg-c120.htm
0
Nabla's Messages postés 20731 Statut Contributeur 3 194
 
un tableau est un pointeur, donc pas de problèmes
0
narvaline Messages postés 10 Statut Membre
 
salut zempachi, merci de m'avoir répondu
j'ai toujours pas compris ce que tu veux dire par "passage de paramètres par valeur et non par variable".
j'ai lu les deux chapitres que tu m'as conceillé et je crois comprendre qu'en C on ne peut efféctuer que des passages par valeur (sauf si on utilise les pointeurs) avec tout ce que ça implique.
toutefois, j'ai fais un affichage du tableau avant d'appeler la fonction du tri et les elements ont changé après la fonction (de 9,5,10,3,1 à 1,1,1,1,1).
je ne sais pas comment j'ai fais ça, en tout cas merci d m'avoir répondu :)
0