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

VB 6 et antérieur Discussion :

[VB6] partitions d'un ensemble [FAQ]


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3
    Par défaut [VB6] partitions d'un ensemble
    je cherche a calculer toutes les partitions sous vb d'un ensemble n d'entiers

    ex:

    ensemble (2,3,4)

    partitions:

    (2)
    (3)
    (4)
    (2,3)
    (2,4)
    (3,4)
    (2,3,4)

    Merci davance

  2. #2
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut
    dans quoi memorise tu ton ensemble et dans quoi memorise tu tes partitions ?
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3
    Par défaut re:re: partitions
    je memorise sur une feuille excel par exemple

  4. #4
    HPJ
    HPJ est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Par défaut
    J'avais déjà répondu à cette question mais le sujet a dû être effacé
    Il faut utiliser une procédure récursive... mais je n'ai pas gardé le code...

  5. #5
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut
    Est-ce que ton ensemble à une taille maxi?
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  6. #6
    Membre émérite
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Par défaut
    Bonjour,

    Voici un exemple de code permettant de terminer les partitions d'un ensemble. Le procédé n'est pas récursif, il est constructif. Tu trouveras surement le moyen de l'améliorer.

    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
    Option Base 0
     
    Public Sub Main()
        Dim Partition() As Variant
        Dim EnsembleInitial() As Integer
     
        InitialiserEnsemble EnsembleInitial, 4
        PeuplerPartition Partition, EnsembleInitial
     
        AfficherPartition Partition
    End Sub
     
    Private Function AfficherPartition(Partition() As Variant)
        Dim i As Integer, j As Integer
        Dim Partie() As Integer
        Dim Ensemble As String
        For i = LBound(Partition) To UBound(Partition)
            Partie() = Partition(i)
            Ensemble = vbNullString
            For j = LBound(Partie) To UBound(Partie)
                Ensemble = Ensemble & Partie(j) & ", "
            Next j
            Debug.Print "(" & Left(Ensemble, Len(Ensemble) - 2) & ")"
        Next i
    End Function
     
    Private Function InitialiserEnsemble(Ensemble() As Integer, NombreElement As Integer)
        Dim Index As Integer
     
        Erase Ensemble
        ReDim Ensemble(NombreElement - 1)
        For Index = 1 To NombreElement
            Ensemble(Index - 1) = Index
        Next Index
    End Function
     
    Private Function PeuplerPartition(Partition() As Variant, Ensemble() As Integer)
        Dim Index As Integer
     
        For Index = LBound(Ensemble) To UBound(Ensemble)
            AjouterElement Partition, Ensemble(Index)
        Next Index
    End Function
     
    Private Function AjouterElement(Partition() As Variant, Element As Integer)
        Dim PartitionTemporaire() As Variant
        Dim Partie() As Integer
        Dim NouvellePartie(0) As Integer
        Dim Index As Integer
     
        If estVide(Partition) Then
            ReDim Partition(0)
            NouvellePartie(0) = Element
            Partition(0) = NouvellePartie
            Exit Function
        End If
     
        PartitionTemporaire = Partition
     
        For Index = LBound(PartitionTemporaire) To UBound(PartitionTemporaire)
            Partie = PartitionTemporaire(Index)
     
            ReDim Preserve Partie(UBound(Partie) + 1)
            Partie(UBound(Partie)) = Element
     
            ReDim Preserve Partition(UBound(Partition) + 1)
            Partition(UBound(Partition)) = Partie
        Next Index
     
        ReDim Preserve Partition(UBound(Partition) + 1)
        NouvellePartie(0) = Element
        Partition(UBound(Partition)) = NouvellePartie
    End Function
     
    Public Function estVide(Tableau() As Variant) As Boolean
        Dim tmp As Long
        On Error GoTo ErrVide
        tmp = UBound(Tableau)
        Exit Function
    ErrVide:
        estVide = True
    End Function
    Citation Envoyé par fenêtre d'exécution
    (1)
    (1, 2)
    (2)
    (1, 3)
    (1, 2, 3)
    (2, 3)
    (3)
    (1, 4)
    (1, 2, 4)
    (2, 4)
    (1, 3, 4)
    (1, 2, 3, 4)
    (2, 3, 4)
    (3, 4)
    (4)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3
    Par défaut Merci
    ce site est vraiment exceptionnel

    Merci pour tout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Partitions d'un ensemble
    Par Dilettante dans le forum Mathématiques
    Réponses: 4
    Dernier message: 28/09/2012, 23h05
  2. [À télécharger] Générer les partitions d'un ensemble
    Par SfJ5Rpw8 dans le forum Vos téléchargements VB6
    Réponses: 0
    Dernier message: 14/11/2010, 18h21
  3. Accès aux partitions en VB6
    Par Vld44 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 23/01/2008, 12h50
  4. Partition de poids minimum d'un ensemble
    Par Sylvain Togni dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 20/07/2007, 14h10
  5. partition d'un ensemble finie
    Par lachose dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 19/10/2006, 03h05

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