PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 22 → Comment réaliser une combinaison
Comment réaliser une combinaison
Débuté par Anthonny, 17 mai 2017 09:54 - 3 réponses
//hostimage.webdev.info/avatars/default.gif
Posté le 17 mai 2017 - 09:54
1. pour n = 8 : avec lettres suivantes : A, B, C, D, E, F, G, H
2. pour k = 3 : Le programme doit écrire ou générer toutes les combinaisons de 8 lettres ci-dessus pris 3 à 3 (3 parmi 8) (avec n = 8 et k = 3)

ABC ADF BCG CDE DEH ABD ADG BCH CDF DFG ABE ADH BDE CDG DFH ABF AEF BDF CDH DGH ABG AEG BDG CEF EFG ABH AEH BDH CEG EFH ACD AFG BEF CEH EGH ACE AFH BEG CFG FGH ACF AGH BEH CFH ACG BCD BFG CGH ACH BCE BFH DEF ADE BCF BGH DEG .
COMMENT RÉALISER CE PROGRAMME?
//hostimage.webdev.info/avatars/ZaMdp3k3JsD1uj0Qs6Q
Membre enregistré
201 messages
Popularité : +5 (5 votes)
Posté le 17 mai 2017 - 10:27
Bonjour.
Le mieux est d'aller faire un tour sur le site:
http://www.dcode.fr/combinaisons

Ensuite il ne reste plus qu'à coder !
Michel.
//hostimage.webdev.info/avatars/8zWSAZEAfDyBpnod1ClA
Membre enregistré
98 messages
Posté le 17 mai 2017 - 13:19
Coucou,

Tu peut t'inspirer de ce code ?

http://www.commentcamarche.net/forum/affich-1640907-algo-creer-toutes-les-combinaisons-possibles


--
Charly CanDo.
Forg en Nouvelle-Zélande ;-) - In üs we trust
//hostimage.webdev.info/avatars/jMxFAZkpfpjF324HNS8A
Membre enregistré
2 messages
Posté le 18 mai 2017 - 15:58
Bonjour,

Le challenge m'a plu.

Voici un petit code qui devrait résoudre le problème. J'utilise des procédures internes, il ne fonctionne qu'à partir de la version 20 (il me semble).
Si besoin, il faut remplacer les procédures internes par des procédures standards.

Je l'ai fait rapidement, le nom des variables et des fonctions n'est pas forcément bien réflechi.

J'espère que ça t'aidera.

Combinaison est une Procedure

PROCEDURE INTERNE iCombiner(n, k)
tElements est un tableau de chaînes
POUR i = 1 A n
Ajoute(tElements,Caract(Asc("A") + i - 1))
FIN

RENVOYER Combinaison(tElements, k)
FIN


PROCEDURE INTERNE iCombinaison(LOCAL tElements est un tableau de chaîne, k)
tCombinaisons est un tableau de chaîne

SI PAS tElements..Vide ALORS
SI k > 1 ALORS
POUR i = 1 _A_ tElements..Occurrence
ElCourant est une chaîne = tElements[1]
Supprime(tElements, 1)
POUR TOUT UnElement de Combinaison(tElements, k-1)
Ajoute(tCombinaisons, ElCourant + UnElement)
FIN
FIN
SINON
POUR TOUT UnElement de tElements
Ajoute(tCombinaisons, UnElement)
FIN
FIN
FIN

RENVOYER tCombinaisons
FIN
Combinaison = iCombinaison

tCombinaisons est un tableau de chaîne = iCombiner(8, 3)


POUR TOUT UneCombinaison de tCombinaisons
Trace(UneCombinaison)
FIN


--
Johjo aka Jonathan Laurent

Mon blog : blog.ytreza.org