Tri d'un tableau
narvaline
Messages postés
10
Statut
Membre
-
Nabla's Messages postés 18201 Date d'inscription Statut Contributeur Dernière intervention -
Nabla's Messages postés 18201 Date d'inscription Statut Contributeur Dernière intervention -
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
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
Configuration: Windows Vista Firefox 3.5.3
3 réponses
-
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; } } -
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.
-
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
-
-
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 :)
-