Combinaisons

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ganagyre
Messages : 67
Inscription : jeu. 09/nov./2006 13:41
Localisation : PACA

Combinaisons

Message par Ganagyre »

Bonjour.


Mon petit bout de code pour les combinaisons de 3 elements.
Normalement avec une variable "Demande = 10" , on devrait trouver
120 combinaisons possible de la premiere = 1 - 2 - 3 à 8 - 9 - 10 .

La je bute à 36 !

Tripatouillage en tout sens, pourtant cela ne doit pas etre bien loin.

Code : Tout sélectionner


OpenConsole()

boucle1 = 0
boucle2 = 0
boucle3 = 0
compteur1 =0
compteur2 = 0
compteur3 = 0
Demande = 10 ; nombre de valeurs à utiliser pour la generation de Combinaisons
num1 = 1
num2 = 2
num3 = 3
total =0



For boucle1 = num1 To Demande 
   
  For boucle2 = num2 + compteur2  To Demande
    
    For boucle3 = num3 + compteur3  To Demande
      
    Delay(10)
    
    total =total+1

PrintN("Combinaison N "+Str(total)+"  Num 1 =  "+Str(boucle1)+"  Num 2 =  " +Str(boucle2) +"  Num 3 =  " +Str(boucle3)) 
    
    Next boucle3
    compteur3 + 1
     
  Next boucle2
   compteur2 + 1
     
Next boucle1
;compteur1 +1


Input()

CloseConsole()


Merci pour tout coup de pouce

@ +
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

P'être comme çà? M'enfin là j'arrive à 360 ;)
Et j'ai pas compris exactement ce que tu veux calculer :?

Code : Tout sélectionner

OpenConsole()

boucle1 = 0
boucle2 = 0
boucle3 = 0
compteur1 =0
compteur2 = 0
compteur3 = 0
Demande = 10 ; nombre de valeurs à utiliser pour la generation de Combinaisons
num1 = 1
num2 = 2
num3 = 3
total =0



For boucle1 = num1 To Demande
   
  For boucle2 = num2 + compteur2  To Demande
   
    For boucle3 = num3 + compteur3  To Demande
     
    Delay(10)
   
    total =total+1

PrintN("Combinaison N "+Str(total)+"  Num 1 =  "+Str(boucle1)+"  Num 2 =  " +Str(boucle2) +"  Num 3 =  " +Str(boucle3))
   
    Next boucle3
    comteur3 =compteur3 + 1
     
  Next boucle2
   compteur2= compteur2 + 1
     
Next boucle1
;compteur1 +1


Input()

CloseConsole()
Est beau ce qui plaît sans concept :)
Speedy Galerie
Lna
Messages : 181
Inscription : mar. 21/juin/2005 11:11

Message par Lna »

@ Ganagyre : 120 combinaisons qui dont chaque numéro ne se trouve pas en double.
Dans le programme la boucle boucle3 n'est plus exécutée pour cause de débordement.
Essaye ton programme avec CallDebugger avant le premier for et regarde pas à pas l'évolution de tes variables.

Code : Tout sélectionner

OpenConsole() 

boucle1 = 0 
boucle2 = 0 
boucle3 = 0 
compteur1 =0 
compteur2 = 0 
compteur3 = 0 
Demande = 10 ; nombre de valeurs à utiliser pour la generation de Combinaisons 
num1 = 1 
num2 = 2 
num3 = 3 
total =0 

For boucle1 = num1 To Demande-2
  For boucle2 = boucle1+1 To Demande-1
    For boucle3 = boucle2+1  To Demande
    
      total+1 
      PrintN("Combinaison N "+Str(total)+"  Num 1 =  "+Str(boucle1)+"  Num 2 =  " +Str(boucle2) +"  Num 3 =  " +Str(boucle3))
      
    Next boucle3 
  Next boucle2 
Next boucle1 

Input() 

CloseConsole() 
@ peluche
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Combinaisons

Message par Backup »

Ganagyre a écrit : Mon petit bout de code pour les combinaisons de 3 elements.
Normalement avec une variable "Demande = 10" , on devrait trouver
120 combinaisons possible
il me semble (sans etre un matheux) que pour avoir toute les combinaisons

sur 3 rangs de chiffres allant de 1 a 10 c'est pas 120 au total !! :?

il me semble me rapeller que ça se calcul comme ça :

pour 10 chiffres de 1 a 10 sur 3 rangs : 10*9*8 = 720 combinaisons possible

d'ailleurs ton prg donne

1,2,3
1,2,4
1,2,5
1,2,6
1,2,7
1,2,8
1,2,9
1,2,10
1,3,4 <--- la y a une erreur , il devrai ecrire 1,3,2 !! combinaison qui n'apparait pas dans ton resultat !! :?

la derniere combinaison devrai etre : 10,9,8 !! :D

a moins que je ne confonde avec les Permutations :D
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

@ Dobro faut aller voir dans les grimoires :wink:
Combinaisons


Oui c'est bien 120 qu'on doit trouver :)
définition du nombre de combinaisons de 3 objets parmi 10 :)
10 ! / ( 3! * ( 10 - 3 ) ! )
= 120
3 ! = 3 * 2 * 1 (3 factoriel)
Et vous pouvez même faire un copier / coller dans google,
http://www.google.fr/
10 ! / ( 3! * ( 10 - 3 ) ! )


il va vous filer la réponse en direct, car c'est aussi une machine à calculer en ligne :)

A quand le café, le chocolat, la petite bière ou le pastis ? :lol:

Ps Il ne monte qu'à factoriel 170 !
Un nombre de 306 chiffres quand même qu'il ne détaille pas le sagouin :lol:
Est beau ce qui plaît sans concept :)
Speedy Galerie
Avatar de l’utilisateur
Ganagyre
Messages : 67
Inscription : jeu. 09/nov./2006 13:41
Localisation : PACA

Message par Ganagyre »

Bonjour.

Pour les Combinaisons c'est bien sans repetition .
Pour en savoir le nombre je passe par excel et la Fonction:

COMBIN

Renvoie le nombre de combinaisons pour un nombre donné d'éléments. Utilisez COMBIN pour déterminer le nombre total de groupes qu'il est possible de former à partir d'un nombre donné d'éléments.

Syntaxe

COMBIN(nombre_éléments;no_éléments_choisis)

nombre_éléments = représente le nombre d'éléments.

no_éléments_choisis = représente le nombre d'éléments dans chaque combinaison.

=COMBIN(8; 2)

Équipes de 2 personnes éventuelles qui peuvent être formées à partir de 8 candidats soit 28

- - - -

Heu en PureBasic, une telle fonction doit certainement exister dans une des nombreuse librairie existante .


Je vous remercie tous pour vos reponses. :wink:
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Bein maintenant que tu as la formule générale
Nb Objets total ! / ( nb Objets choisis ! * ( Nb objets total - Nb d'objets choisis ! ))
Le fameux n! / (p! * (n-p) ! )
plus besoin d'excel, Google suffit :lol:
28! / (2! * (28 - 2) ! ) = 378 :)
Dernière modification par Frenchy Pilou le mar. 28/nov./2006 14:08, modifié 1 fois.
Est beau ce qui plaît sans concept :)
Speedy Galerie
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

alors j'ai confondu avec les arangements !
(720 possibilités pour 3 rang des chiffre 1 a 10) :D
Répondre