Math et combinaison

laurent180 Messages postés 72 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 2 novembre 2008 - 16 janv. 2006 à 12:26
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 - 16 janv. 2006 à 17:14
Boujour a tous,

j'aimerai crée un prog qui me permettrai de trouver des combinaison a partir de chiffre donné exemple si j'ai 12, 15, 25, 63. je veut tt les combinaison sur 3 ligne donc:
12 15 25
12 15 63
12 25 63
15 25 63
etc...
Je ne cherche pas a avoir a tt prit le code mais si j'ai deja les formule mathématique sa m'arrangerai. le code est aussi le bien venu.

Merci a vous tous Lau180

2 réponses

jannoman Messages postés 256 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 20 février 2008 1
16 janv. 2006 à 13:10
si tu as un tableau t(1 to n) et que tu veux afficher les combianaisons de k nombres du tableau (supposés tous différents, k<=n) :

private sub masub(texte as string, k_encours, m as integer)
dim l as integer

if k_encours = k then
Me.Print texte
else

for l = m +1 to (n - (k - k_encours + 1))
masub (texte & " " t(l)), (k_encours + 1), l
next l

end if

end sub

explication : procédure récursive ; texte correspond à la combinaison que tu es en train de créer, k_encours au nombre d'éléments que tu as déja sélectionné dans ton tableau, et m l'indice à partir duquel il va falloir prendre des éléments dans ton tableau

A+.
Thomas.
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
16 janv. 2006 à 17:14
La "formule" matheuse est fort simple... c'est exactement celle qui nous permet de savoir que dans le nombre "999", en décimale, il y a "1000" nombres différents.
Autrement dit, il faut considérer tes nombres comme des chiffres. Autrement dit, comme des unités primaires de comptage. Je ne sais pas si tu sais utiliser l'hexadécimale ou le binaire mais c'est exactement le même principe.
La "formule" est très simple :
Îl faut penser à 23= 8... Autrement dit, avec deux chiffres "0 et 1" et 3 cases on n'a que 8 combinaisons possibles ( pense qu'il faut que ça fasse 8 et pas 9... méthode mémo-technique pour retenir la "formule" afin de ne pas confondre avec 32 qui font 9!!! ) :

0-1 usr XXX :
1 - 000
2 - 001
3 - 010
4 - 011
5 - 100
6 - 101
7 - 110
8 - 111

Les chiffres (1 et 0) étant la base et le nombre de chiffre étant ce que j'appele les cases.

Donc, la formule est :
Base puissance Cases : BaseCases

Par exemple... Base 10 (décimale... la notre) et Cases 3 (XXX) on a
10^3 = 1'000, tout simplement!

Alors attention car cette "formule" prends en compte les doublons... Autrement dit, tu pourras avoir : chiffre2 chiffre2 chiffre1 !

Je suis personnellement toujours à la recherche de la "formule" me permettant de ne pas prendre en compte ces "doublons" dans les combinaisons...
Enfin, y'a des matheux sur VBFrance qui doivent bien avoir la réponse !!!

Voilà. Mais bon, la solution de Janno doit peut-être être meilleurs! A toi de voir!

Enjoy
<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
0
Rejoignez-nous