Tri à bulles
Résolu/Fermé
Marryde
Messages postés
3
Date d'inscription
samedi 21 mai 2016
Statut
Membre
Dernière intervention
23 mai 2016
-
Modifié par NHenry le 21/05/2016 à 14:12
Marryde Messages postés 3 Date d'inscription samedi 21 mai 2016 Statut Membre Dernière intervention 23 mai 2016 - 23 mai 2016 à 10:49
Marryde Messages postés 3 Date d'inscription samedi 21 mai 2016 Statut Membre Dernière intervention 23 mai 2016 - 23 mai 2016 à 10:49
1 réponse
ElementW
Messages postés
4814
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 227
21 mai 2016 à 17:03
21 mai 2016 à 17:03
'lut,
dans ton
Tu demandes le nombre d'éléments (intrinsèquement limité à MAX et dont tu fait la vérif sans re-mentionner MAX,
Sauf que ta fonction de tri trie l'intégralité du tableau, et pas seulement la partie où les données ont été entrées. Or en C, un tableau, tant qu'on ne le remplit pas, contient des valeurs indéfinies, qui peuvent être -8094637 par exemple.
Il faut donc faire en sorte que
Il en va de même pour l'affichage de ton tableau: tu vas jusqu'au bout de
Par ailleurs, le bon prototype de main est
dans ton
maintu créés un tableau
tabde taille
MAX, cette taille étant fixe car faire un tableau de la taille qu'on veut vraiment est un peu plus complexe. Ainsi soit-il, c'est une très bonne méthode pour démarrer.
Tu demandes le nombre d'éléments (intrinsèquement limité à MAX et dont tu fait la vérif sans re-mentionner MAX,
} while (nb<=0 && nb>=MAX);serait donc plus adéquat), demande la valeur des éléments, puis trie...
Sauf que ta fonction de tri trie l'intégralité du tableau, et pas seulement la partie où les données ont été entrées. Or en C, un tableau, tant qu'on ne le remplit pas, contient des valeurs indéfinies, qui peuvent être -8094637 par exemple.
Il faut donc faire en sorte que
tri_a_bullen'aille pas jusque
MAX, mais juqu'à un paramètre
int tailleTab(par exemple) que tu passeras à la fonction, sa valeur étant celle de
nbdans ton main.
Il en va de même pour l'affichage de ton tableau: tu vas jusqu'au bout de
tabalors que tu n'as attribué de valeur qu'aux
nbpremiers éléments.
Par ailleurs, le bon prototype de main est
int main (void), pas
void main (void), et il faut un
return 0;à la fin.
21 mai 2016 à 18:59
Tout d'abord, merci pour ta réponse, c'est très gentil!
Ensuite, pour que je comprenne bien, il faut que je rajoute une variable comme tu l'as dit "tailletab" dans ma fonction "tri a bulle", que j'initialise à nb qui correspond à mon nombre de ligne (j'aurais donc int tailletab=nb)?
Ainsi dans mes boucles "for" de ma fonction, au lieu d'avoir MAX, j'aurais mon tailletab?
Puis dans mon MAIN, je mets mon tailletab (ou nb) au lieu des MAX?
Pour ce qui est du "void main (void), je l'ai appris comme ça, mais pourrais tu m'expliquer la différence entre les 2 (si ça te dérange pas bien sur!).
Encore merci, j'espère avoir compris ton explication ( et je m'excuse si je l'ai pas compris d'ailleurs)
Modifié par gravgun le 21/05/2016 à 19:31
Pour les boucles, tu as compris.
Concernant le prototype du , la différence entre ton code et le standard, c'est que est censé retourner un qui est en fait le code numérique de retour/fin de ton programme entier (sur Windows ça ne sert que peu mais c'est important sur les systèmes Unix(-like) comme Linux ou Mac OS), indiquant que le programme s'est déroulé correctement. Or toi tu ne revoies rien ( ), ce qui est invalide.
Modifié par fiddy le 21/05/2016 à 22:15
} while (nb<=0 && nb>=MAX);
serait donc plus adéquat), demande la valeur des éléments, puis trie...
Et surtout mettre || au lieu de &&. Sinon, la boucle ne sert à rien ;-).
22 mai 2016 à 12:30
23 mai 2016 à 10:49