Dans le cadre d’un cours de C à l’EPSI Nantes, il nous a été demandé de créer une fonction qui permettra de trier de façon croissante (ou décroissante, c’est simplement l’algorithme inverse) une série de 5 nombres entrée par l’utilisateur. Il est à noter que la fonction ne pourra pas utiliser de tableau, ni de pointeur, ni les fonctions de tris disponibles en C.
Je vais donc vous proposer dans cet article un des algorithmes possible pour répondre à cette problématique.
procedure tri
E: entier : x1,x2,x3,x4,x5;
debut
Si x1 > x2 Alors
tri(x2,x1,x3,x4,x5)
SinonSi x2 > x3
tri(x1,x3,x2,x4,x5)
SinonSi (x3 > x4)
tri(x1,x2,x4,x3,x5)
SinonSi (x4 > x5)
tri(x1,x2,x3,x5,x4)
FinSinonSi
//Test si x1 > x2 et x2 > x3 ...
//Afficher les nombres dans le bon ordre
Et le code C :
void tri(float x1, float x2, float x3, float x4, float x5){
if(x1 > x2)
tri(x2,x1,x3,x4,x5);
else if(x2 > x3)
tri(x1,x3,x2,x4,x5);
else if(x3 > x4)
tri(x1,x2,x4,x3,x5);
else if(x4 > x5)
tri(x1,x2,x3,x5,x4);
//Test si x1 > x2 et x2 > x3 ...
//Afficher les nombres dans le bon ordreIl est alors facilement imaginable d’améliorer l’algorithme : avec un nombre x d’entier ou de réel au lieu de 5, d’utiliser un tableau et des pointeurs.
De quoi parle-t-on ici ?
Message plus récent
Accueil
2 commentaires:
Ajoutez un commentaire via Google Friend Connect... ...ou en utilisant les commentaires standards sous Blogger...1) L'algorithme n'est pas optimal: trop de tests et d'appels de fonction;
2) A la sortie de l'algorithme, le 5 valeurs sont dans l'ordre initial; la plupart du temps, imprimer les valeurs dans l'ordre est inutile, on trie pour conserver l'ordre obtenu...
3) Si "imprimer dans l'ordre" est satisfaisant, alors modifier l'énoncé qui n'est pas assez précis
dimanche, 26 octobre, 2008
Anonyme1) Je trouve dommage qu'un post constructif comme le vôtre soit anonyme.
2) Comme je l'énonce dans mon introduction, ce n'est qu'un algorithme possible et fonctionnel (ce qui était mon but initial)
3) Il n'y a pas de sortie à la fonction dans l'exemple. La solution est de retourner un tableau après le dernier test.
4) Comme écrit en commentaire dans l'algorithme le but était d'afficher les variables en ordre croissant, mais je viens de voir que je ne l'ai pas préciser dans l'énoncé, je corrige.
Merci.
lundi, 27 octobre, 2008
François-Guillaume RibreauJe veux participer à la discussion !
Soyez le premier à relayer l'information !
Me linker