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

JavaScript Discussion :

Combinaison récursive des éléments de tableau à deux dimension en JavaScript


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2013
    Messages : 6
    Points : 9
    Points
    9
    Par défaut Combinaison récursive des éléments de tableau à deux dimension en JavaScript
    bonjour cher tous,
    je galère pour faire une combinaison récursive des éléments d'un tableau à deux dimension et donc je voudrais avoir l'aide de quelqu'un.
    voici mon code que ne donne jusque là pas de résultat escompter:


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    //Fonction recursive de générer les différentes combinaisons pour
    // un nombre de critère données ayant différentes valeurs possibles
    // nCriter est le critère en cour d'utilisation
    // nAvantDernier_criter represente le dernier critère du modèle courant
    // nDepart est l'indice du critère courant
    // nNbreCrit represente le nombre de critère sur lesquels l'on travail
    // arTab est la table de table dont on souhaite combiner les éléments
    function setCombinaison_suffixe(nCriter, nAvantDernier_criter, nDepart, nNbreCriter, arTab)
    {
        var testTour = false;
        if (nNbreOperation == nNbreCombinaison)
            return;
     
        for (nVal_cour = nDepart; nVal_cour < arTab[nCriter].length; nVal_cour++)
        { 
            if (nCriter == nNbreCriter - 1)
            {
                strSuffixe = strSuffixe + strModele.split('|').join("") + arTab[nCriter][nVal_cour] + '|';
                nNbreOperation += 1;
            }
            else  
            {
                strModele += arTab[nCriter][nVal_cour] + '|';
                arSituationTotal[nCriter] = nVal_cour;
            }
     
            //On vérifie si on est au dernier indice du dernier critère 
            if ((nVal_cour == arTab[nCriter].length - 1) && (nCriter == nNbreCriter - 1))
            { 
                var strModeleTemp = '';
                for (var i = 0; i < strModele.split('|').length - 2; i++)
                {
                    strModeleTemp += strModele.split('|')[i] + '|';
                }
                strModele = strModeleTemp;
                nNivo_Dec_positionVal = arSituationTotal[nAvantDernier_criter] + 1;
     
     
                if ((nNivo_Dec_positionVal > arTab[nAvantDernier_criter].length - 1))
                {
                    if ((arSituationTotal[nAvantDernier_criter + 1] == arTab[nAvantDernier_criter + 1].length - 1) || (nAvantDernier_criter + 1 == nNbreCriter - 1))
                    {
                        nAvantDernier_criter -= 1;
                        if (nAvantDernier_criter > -1)
                        {
                            var strPosition = '';
                            for (var nCompteur = nNbreCriter - 2; nCompteur > 0; nCompteur --)
                            {
                                if (arSituationTotal[nCompteur] == arTab[nCompteur].length - 1)
                                {
                                    strModeleTemp = '';
                                    for (var i = 0; i < strModele.split('|').length - 2; i++)
                                    {
                                        strModeleTemp += strModele.split('|')[i] + '|';
                                    }
                                    strModele = strModeleTemp;
                                }
                                else
                                {
                                    break;
                                }
                            }
                            nNivo_Dec_positionVal = arSituationTotal[nAvantDernier_criter] + 1;
                        }
                        else
                        {
                            nNivo_Dec_positionVal = arSituationTotal[1] + 1;
                            nAvantDernier_criter = 0;
                        }
                        nCriter = nAvantDernier_criter - 1;
                    }
                    else
                    {
                        nNivo_Dec_positionVal = arSituationTotal[nAvantDernier_criter + 1] + 1;
                        nCriter = nAvantDernier_criter;
                        testTour = true;
                    }
     
                }
                else if (nAvantDernier_criter > -1)
                {
                    nCriter = nAvantDernier_criter - 1;
                }
     
     
                if ((arSituationTotal[0] > 0) && arSituationTotal[nNbreCriter - 2] == 0)
                {
                    nAvantDernier_criter = nNbreCriter - 2;
                    nCriter =  nAvantDernier_criter - 1;
                }
     
                // condition de sortie
                var bSortie = true;
                for (var i = 0; i < nNbreCriter - 2; i++)
                {
                    if (arSituationTotal[i] != arTab[i].length - 1) {
                        bSortie = false;
                        break;
                    }               
                }
                if ((bSortie == true) && (arSituationTotal[nNbreCriter -2] == arTab[nNbreCriter -2].length -1))
                    return;
     
            }
     
            if (nCriter < nNbreCriter - 1)
            {
                // si nous sommes sur l'avant dernier critère
                if (testTour) {
                    testTour = false;
                    setCombinaison_suffixe(nCriter + 1, nAvantDernier_criter, nNivo_Dec_positionVal, nNbreCriter, arTab);
                }
                if (nCriter + 1 == nAvantDernier_criter) {
                    if ((nAvantDernier_criter == 0) && (arSituationTotal[0] != 0)) {
                        nCriter = 0;
                    }
                    // on passe au critère intermediaire
                    setCombinaison_suffixe(nCriter + 1, nAvantDernier_criter, nNivo_Dec_positionVal, nNbreCriter, arTab);
                }
                else { // on passe sur le dernier critère
                    setCombinaison_suffixe(nCriter + 1, nAvantDernier_criter, 0, nNbreCriter,arTab);
                }
            }
     
            // Condition de sortie 
            if (nNbreCombinaison == nNbreOperation)
                break;
        }
        return;
    }

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    je pense qu'il faudrait que tu exprimes mieux ton besoin, entrée -> sortie, si tu veux obtenir un peu d'aide

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/05/2014, 16h53
  2. Tableau à deux dimensions : comparer des valeurs
    Par johnny3 dans le forum Langage
    Réponses: 0
    Dernier message: 29/04/2010, 11h49
  3. Soustraire des éléments de tableau entre eux
    Par syl2095 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/01/2005, 15h29
  4. tri alphabétique dans un tableau deux dimensions
    Par *!!cocco!!* dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 06/12/2004, 21h38
  5. Passage d'un tableau à deux dimensions
    Par karl3i dans le forum C
    Réponses: 3
    Dernier message: 20/10/2003, 14h50

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