Résolu Generer des combinaisons - Structure en Arbre

amgab2003

Nouveau membre
Bonjour,

J'ai un problème d'arrangement à résoudre:
J"ai des objets (Strings ou autres objets) à arranger suivant toutes les combinaisons possibles : par exemples si mes objets sont A,B,C
mon programme doit générer la liste suivante:

ABC-ACB-BAC-BCA-CAB-CBA

Le nombre peut aller à quelques dizaines! soit 3628800 combinaisons par exemple pour 10 objets (factoriel 10)
J'ai eu l'idée d'utiliser un structure d'arbre comme illustré dans le screenshot ci dessous(illustré par le contrôle TreeView)


J'ai deux question:

1) Est ce qu'il y a une meilleure méthode pour effectuer cette tache

2) J'utilise maintenant le contrôle TreeView mais ça ne me permet pas de stocker des objets quelconques et c'est lourd pour des long traitements. Est ce qu'il y a des classes prêtes qui permettent de stocker des arbres (n-aires)?

Je vous remercie d'avance
 

zeb

Modérateur
Salut,

Il faudrait que tu te crées tes propres objets.
Le VB n'est pas peut être pas le meilleur des langages pour ce genre de chose.
Connais-tu le Java, le C++ ou le Pascal Objet ? Si oui, je t'invite à te tourner vers ces langages, bien plus riches.

VB permet surtout de réutiliser des briques toutes faîtes.
 

amgab2003

Nouveau membre
Bonjour,
Merci pour la réponse
Le VB n'est pas peut être pas le meilleur des langages pour ce genre de chose.
Connais-tu le Java, le C++ ou le Pascal Objet ? Si oui, je t'invite à te tourner vers ces langages, bien plus riches.
Java n'est il pas trés lent pour des traitements aussi longs!
Pascal me parait peu utilisé
C++ parait plus adéquat mais je me suis familiarisé avec VB que je trouve le plus facile.
 

zeb

Modérateur
Java, lent ? M'enfin, VB est bien pire !
Le Pascal, souvent étudié en fac ou en école, est utilisé par le très moderne Delphi, dans une version Objet très agréable à utiliser, Borland étant un précurseur des EDI RAD.
Le C++ est LE langage objet par excellence. Ni le premier, ni forcément le meilleur, il reste cependant la référence. Basé sur le C, il ne reste que "orienté objet" et non pas "full object". Permissif au possible, d'où ça mauvaise réputation, il est sans garde-fou, aussi, le novice ou le programmeur peu consciencieux pourron faire plus d'erreur que de lignes de code.

Si tu trouves VB facile, c'est que justement, il est fait pour réutiliser des objets tout faits. Il est cependant possible d'en créer soi-même.

Sinon, il reste aussi le bon vieux C, avec lequel tu pourrais très bien t'en sortir.

-----------------------------------

Quelle version de VB utilises-tu ?
 

batchy

Grand Maître
Meilleure réponse
en C++, il existe une fonction toute faite pour ça : std::next_permutation

Une fois mis dans une boucle, tu peux passer d'une permutation à la suivante en un clin d'oeil.

Je me souviens pas avoir vu ce genre de fonction en java/pascal, mais ça existe surement dans une librairie sinon.
 

zeb

Modérateur
Batchy +1
(Sauf s'il s'agissait d'un exercice scolaire ! :o )

amgab2003, Alors cela ne te convainc pas de la supériorité de certains langages par rapport à d'autres ;) ?
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 845
Membres
1 586 373
Dernier membre
https://forum.tomshardwar
Partager cette page
Haut