PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Comment réaliser une combinaison
Comment réaliser une combinaison
Débuté par Anthonny, 17 mai 2017 09:54 - 5 réponses
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?
Membre enregistré
326 messages
Popularité : +15 (19 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.
Membre enregistré
948 messages
Popularité : +30 (92 votes)
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
Membre enregistré
96 messages
Popularité : +18 (20 votes)
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
Posté le 21 décembre 2020 - 22:55
Merci pour cet algo, je cherchais à débrouiller rapidement un calcul statistique, il est nickel.
Membre enregistré
946 messages
Popularité : +102 (110 votes)
Posté le 22 décembre 2020 - 11:54
bonjour
la solution était là https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev.old/26731-combinaison/read.awp

--
«Nos clients sont nos meilleurs beta testeur.» H. Mintzberg
«Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse» Troisième loi de Greer