|
Publicité ' | ||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Assistant de direction Inscription : septembre 2011 Messages : 4 ![]() |
Bonjour,
Encore une question d'apparence élémentaire, et qui me plonge dans des abîmes de perplexité. J'ai trois variables Integer modifiables dans une boucle, et je dois à chaque tour renvoyer la plus petite d'entre elles, à condition qu'elle ne soit pas nulle. Or, je n'ai pas trouvé d'autre solution que de passer en revue tous les cas de figure un à un. D'une part, Je suis étonné qu'il n'existe pas une fonction ou autre propriété des nombres qui permette d'avoir le résultat en un tour de main. D'autre part j'envisage d'ajouter d'autres variables à cette liste, et ma méthode, déjà peu élégante, va vite devenir fort lourde à appliquer. Voici une version démo de la procédure : Code :
Merci |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() JF JousseaumeInscription : octobre 2007 Messages : 2 390 ![]() |
Salut Corvvin,
Je pense que tu es dans le cas d'un problème d'une pesée en un minimum de coups. Tu as 3 entiers naturels, A, B et C dont tu recherches la valeur minimale non nulle (en regardant ton code, on voit que si A = B = C = 0 alors on doit renvoyer 0). Voici un algo en pseudo-code : Code :
@+ |
||
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 333 ![]() |
Salut,
Ou utiliser un tri à bulles. http://algo.developpez.com/sources/?page=tri Ou utiliser un tableau dans un nouveau document, faire un tri du tableau avec la fonction de tri et prendre la première valeur si le tri est ascendant.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#4 | ||
|
Invité de passage
![]() Assistant de direction Inscription : septembre 2011 Messages : 4 ![]() |
Merci les amis,
La solution proposée par Heureux-Oli d'utiliser un tableau dans Word et d'y appliquer la méthode Sort fonctionne certainement. J'avoue cependant qu'avant de créer un document pour résoudre un problème de code, j'essaye toujours de voir s'il n'y a pas une solution "autonome" en VBA. Dans ce but, d'ailleurs, j'avais déjà essayé le tri à bulle, mais... je n'y suis pas arrivé. Il y a toujours un cas qui est "oublié"... Néanmoins, je vais revoir de nouveau la question grâce aux sources algorithmes de ce lien, fort intéressant. La suggestion de Sepia rejoint ma démarche. En fait, j'ai commencé de cette façon, mais pour traiter tous les cas, j'ai dû à chaque fois en rajouter. Je joints de nouveau la procédure, modifiée avec l'algo proposé : Code :
Si j’obtiens quelque chose, d'une façon ou d'une autre, je le communiquerai. Merci encore. |
||
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Assistant de direction Inscription : septembre 2011 Messages : 4 ![]() |
Bonjour,
Voici comme promis une solution qui semble fonctionner. Je n'ai pu appliquer directement les algo sources de Romuald Perrot, mais j'en ai retenu (sinon parfaitement compris) certains principes. Voici le résultat. J'ai ajouté une variable pour pousser un peu le test : Code :
Noter que la difficulté vient de ce qu'on exclue les valeurs minimales lorsqu'elles sont nulles. Sans cela, l'algorithme serait beaucoup plus simple. Je reste ouvert à toutes suggestions. Encore merci de votre aide.
|
||
|
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Assistant de direction Inscription : septembre 2011 Messages : 4 ![]() |
Certains, arrivés sur ce topic à cause de l'intitulé principal, peuvent être déçus de ne pas y trouver la réponse à la question telle qu'elle y est résumée (un peu abusivement).
Voici donc le moyen d'obtenir le plus petit d'une liste de nombres, qu'il soit nul ou pas, grâce au lien d'un heureux (au lit) : Code :
Noter que les limites du compteur j sont différentes de celles de son équivalent y du code précédent, car ce tableau est créé avec la fonction Array, qui, par défaut, indexe les éléments à partir de zéro. Merci de votre attention. Au revoir
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com