Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : A Nico1610 - Récursivité [ Archives Visual Basic / J'AI BESOIN D'AIDE !!!! :) ] (LIQUIDAMBAR)

dimanche 5 février 2006 à 23:48:45 | A Nico1610 - Récursivité

LIQUIDAMBAR

Membre Club

J'ai trouvé ce programme dans les codes sources et la procédure combinaisons m'est incompréhensible. Merci pour ton aide,
GDM

Private Sub cmdGO_Click()
Dim Valeur(0 To 2) As Integer
Dim i As Integer
Dim N As Long
Dim Fichsortie As Integer
Fichsortie = 1
Open "c:\m.doc" For Output As #1
    For i = 0 To 2
        If Not IsNumeric(txtSomme(i).Text) Then Exit Sub
        Valeur(i) = CInt(txtSomme(i).Text)
    Next

    With lstCombinaisons
'       .Clear
        Combinaisons Valeur(0), Valeur(1), Valeur(2)
        N = .ListCount
        If N < 0 Then N = 2 ^ 16 + N    ' dépassement de capacité
        .AddItem CStr(N) & " possibilité(s) :", 0
    End With
    Print #1,
    Print #1, CStr(N) & " séries "
    Close #1
End Sub

' -------------------------------------------------------------------
' Nom  : Combinaisons
' Desc : Cherche k nombres différents, inférieurs ou égaux à N,
'        tels que leur somme soit égale à Somme
' -------------------------------------------------------------------
Private Sub Combinaisons( _
    ByVal Somme As Integer, ByVal k As Integer, ByVal N As Integer, _
    Optional ByVal strComb As String = "")
Dim Min As Integer, Max As Integer
Dim i As Integer

    Min = k * (k + 1) / 2
    Max = (N + 1) * k - Min
    If Somme < Min Or Somme > Max Then Exit Sub
   
    If k = 1 Then                       ' fin de la récursivité
        If Somme <= N Then              ' combinaison trouvée
            strComb = strComb & CStr(Somme)
            lstCombinaisons.AddItem strComb
        End If
    Print #1, strComb
    Else                                ' lance la récursivité
        Max = Somme - k * (k - 1) / 2
        Min = (2 * Somme - Max) / k
        If N < Max Then Max = N
        For i = Max To Min Step -1
            Combinaisons Somme - i, k - 1, i - 1, _
                         strComb & CStr(i) & "+"
        Next
    End If
 
End Sub



GDM


lundi 6 février 2006 à 01:46:26 | Re : A Nico1610 - Récursivité

ScSami

Membre Club
Bon, et alors, c'est quoi ton problème ???

Enjoy

( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )

lundi 6 février 2006 à 04:17:49 | Re : A Nico1610 - Récursivité

Gobillot

Réponse acceptée !
pour comprendre, il faut prendre un exemple et essayer de suivre:
exemple avec:
Somme=9 k=3 N=5


contrôle:
3+4+5 --> Max=12
1+2+3 --> Min=6
donc 9 est bien compris entre 6 et 12

pour un chiffre en moins (k=2):
- le Minimun est de 3 (=1+2)
   il reste donc un Max de 9 - 3 --> 6
- jusqu'à une limite moyenne ???  <-- c'est ici le point le plus délicat
  Min =  ( (Somme-Max) + (Somme))/k =t (9-6 + 9)/3 = 4
- etc ...

récapitulation:
Somme=9 k=3 N=5
Max=9 - 3*2/2 = 6
Min = (2*9 - 6)/3 =4
N < Max donc Max=5
i=5  Combinaisons 4,2,4,"5+"
       Somme=4 k=2 N=4
       Max=4 - 2*1/2 = 3
       Min= (2*4-3)/2 = 2
       i=3 Combinaisons 1,1,2,"5+3+"
              k=1 donc print "5+ 3+ 1"
       i=2 Combinaisons 2,1,1,"5+2+"
              eXit parce que Somme > 1
i=4  Combinaisons 5,2,3,"4+"
       Somme=5 k=2 N=3
       Max=5 - 2*1/2 = 4
       Min= (2*5-4)/2 = 3
       N < Max donc Max=3
       i=3 Combinaisons  2,1,2,"4+3+"
              k=1 donc print "4+ 3+ 2"
 
Daniel

lundi 6 février 2006 à 05:52:52 | Re : A Nico1610 - Récursivité

Zlub

Membre Club


Salut,

Bel effort de Gobillot !! .. j'ai pas vérifié mais je lui fais confiance...

Bon courage ..

++

Zlub

lundi 6 février 2006 à 17:54:08 | Re : A Nico1610 - Récursivité

Gobillot

pour plus d'explications, il vaudrait mieux s'adresser directement à l'auteur

http://vbfrance.com/code.aspx?ID=20350

Daniel

lundi 6 février 2006 à 18:55:36 | Re : A Nico1610 - Récursivité

Zlub

Membre Club


Salut,


Re bel effort de Gobillot ... qui lache pas le morceau !!


++

Zlub

jeudi 9 février 2006 à 09:47:26 | Re : A Nico1610 - Récursivité

LIQUIDAMBAR

Membre Club
Bonjour,

Merci à tous pour avoir daigné répondre à mon problème. Proficiat Gobillot, c'était on ne peut plus clair. Encore un tout grand merci.

GDM



Cette discussion est classé dans : valeur, max, somme, combinaisons, strcomb


Répondre à ce message

Sujets en rapport avec ce message

probleme de max [ par liam ] etant un bleu en vb j'aimerai un petit coup de main pour coder cet algo, sachant j'essaie de developper une macro excel:debutdif si dif>0 alorsmax(som ProgressBar avec valeur max = Len(txt.Coller.txt) [ par serge ] je n'arrive pas a faire fonctionner un PresseBar avec une boucle For dont i est égale à 1 To Len(txtColler.text)VB6 n'accepte pas la valeur Len....com Min...Max...d'un comboboxe... [ par Gigi ] Bonjour! voici mon probleme... j'ai des nombres dans un comboboxes, et je veux afficher dans des labels respectifs, la valeur minimal et la va problème de label [ par phil98 ] Bonjours à tous et à toutesvoici mon problème, je dois faire une somme de nombres (variable) et mettre la valeur dans un label. Mais la valeur doit s' Slider vertical valeur max en haut VB6 [ par Bubar92Bubar92 ] Bonjourmetre la valeur max du Slider en haut  (Slider a la vertical)ex: min = 0 (valeur en bas)     max = 65535 (valeur en haut)merci d'avanceC.V <TAB Problème urgent au niveau des états !!! [ par billou_13 ] Voila j'explique mon problème, j'ai demandé toute la journée a des amis, puis au boulot de ma mere sans aucune personne qui ne savait quoi faire ??? valeur max [ par lea75 ] Bonsoir à tous,J'aimerais écrire une requete qui me trouve la valeur max de l'id de ma table.Et j'ai écrit req="select maxval(idreservations) from res Comment peut on savoir quel est la valeur max dans un tableau de valeurs ? [ par Moi ] Comment peut on savoir quel est la valeur max dans un tableau de valeurs ? Mettre une valeur 0 vide [ par TTHIERRY ] bonjour,j'es un classeur avec deux feuil Excel , Dans le feuil1  une cellule qui donne la somme d'une colonne  SOMME:(A1;A32) cette valeur est reporte pb programmation en VBA d'une formule excel personnalisée [ par heriss ] Bonjour,Mon but est de créer une fonction qui ferai un test pour identifier si les libellés d'articles (1 colonne => data) contiennent le nom d'une sé


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.