IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

combinaisons de p éléments parmi n


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut combinaisons de p éléments parmi n
    bonjour

    besoin d'une aide, je ne sais pas faire etje suis débutant
    je souhaiterai avoir un programme qui permet d'avoir de toutes les combinaisons possibles d'un tirage exemple : [ABCD]
    je veux [AB] [AC] [AD] [BC] [BD] [CD]
    et aussi je voudrai paramtrer les elements dans ces tirages
    exêmple[ABC] [ABD] [BDC]

    pouvez vous m'aider

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Si j'ai bien compris ce que tu veux faire, je pense que le plus simple pour toi est d'utiliser une fonction récursive (après on pourra toujours optimiser) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    fonction x(const std::string & prefixe,const std::string & MesCaractères)
    {
            //si MesCaractères n'a qu'un seul élement :
                    std::cout << prefixe << MesCaractères << std::endl;
            //sinon
                    //pour chaque élément de MesCaractères
                              std::string prefixeTmp = prefixe;
                              prefixeTmp += MesCaractères[i];
                              MesCaractèresTmp = MesCaractères;
                              //on retire le ième élément de MesCaractèresTmp.
                              x(prefixeTmp, MesCaractèresTmp);
    }
    Je t'ai un peu maché le travail, donc essaye de refaire ceci mais avec une itérative^^

  3. #3
    Invité
    Invité(e)
    Par défaut
    je m'en sors pas
    jarrive pas a activer cette fonction
    peux tu me donner un exemple

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    En fait il vaut mieux utiliser un prototype du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void combinaison(const std::string & MesCaractères, const std::string & prefixe = "");
    Pour l'utiliser, c'est très simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    combinaison("ABCDEFGHIJKLMNOP");/* /!\ si tu veux que des combinaisons soit rangée dans l'ordre alphabétique et qu'il n'y ai pas de doublon, il fait que la chaine de départ soit rangée dans l'ordre alphabétique sans doublons. */

  5. #5
    Invité
    Invité(e)
    Par défaut
    et bien je n y 'arrive
    je ne comprends pas comment mettre bout à bout le programme pour qul fonctionne
    je suis un boulet
    desole

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Montre moi ce que tu as déjà fait.

    N'oublie pas :

    (Depuis le temps que j'ai envie d'essayer ce smiley^^)

  7. #7
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Citation Envoyé par fabrice192 Voir le message
    et bien je n y 'arrive
    je ne comprends pas comment mettre bout à bout le programme pour qul fonctionne
    je suis un boulet
    desole
    Il n'y a rien de boulet à souhaiter comprendre.

    Apparemment, tu ignores comment réaliser un programme complet.
    Voici la structure d'un programme court en C++:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /* inclusions des en-têtes utilisés, par exemple: */
    #include <string>
    //...
     
    /* déclarations des fonctions, normalement, dans un fichier d'en-tête séparé: */
    void combinaison(const std::string & MesCaractères, const std::string & prefixe = "");
     
    /* la fonction main, point de départ du programme*/
    int main(){ // ou int main( int nbArguments, char** arguments) {
    //...
    combinaison("ABCDEFGHIJKLMNOP");
    /* /!\ si tu veux que des combinaisons soit rangée dans l'ordre alphabétique et qu'il n'y ai pas de doublon, il fait que la chaine de départ soit rangée dans l'ordre alphabétique sans doublons. */
    //...
    return 0;//un retour 0 pour signaler un arret normal du programme
    }
     
    /* définitions des fonctions ayant leurs prototypes (normalement dans un autre fichier source, lié à la compilation */
     
    void combinaison(const std::string & MesCaractères, const std::string & prefixe){
    // ici le code
    }
    Ceci ne résoudra pas tout ton problème (qui ressemble beaucoup à un bon exercice d'étudiant), mais ca devrait te débloquer.
    Je te recommande de lire la faq C++ de notre cher site

    PS: Définir d'autres fonctions que main dans le fichier principal est souvent une entrave à la lisibilité.

Discussions similaires

  1. Combinaisons de p éléments parmi n
    Par chekchouka dans le forum Général Java
    Réponses: 9
    Dernier message: 11/06/2011, 18h01
  2. Combinaisons à 6 chiffres possibles parmi 20 nombres
    Par djbebop dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 14/05/2011, 14h46
  3. Ordonner un test par combinaisons de k croissant parmi 27
    Par Tokapi dans le forum Mathématiques
    Réponses: 2
    Dernier message: 18/06/2009, 19h45
  4. Combinaison de n éléments dans un ensemble de n éléments sans répétition
    Par clowny dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 03/01/2009, 12h06
  5. Obtenir la liste des combinaisons de p éléments d une liste de n éléments?
    Par Stéphane Nadry dans le forum Général Python
    Réponses: 7
    Dernier message: 18/02/2008, 20h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo