begin process at 2012 02 15 05:32:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

Maths

 > 

Algorithme


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Algorithme

vendredi 29 avril 2005 à 10:17:23 | Algorithme

dany108

Bonjour à tous,
je cherche à faire un algorithme qui me produise toutes les combinaisons d'un groupe d'éléments.

Par exemple si j'ai 1,2,3 et 4
Je voudrais obtenir :
1
2
3
4
1.2
1.3
1.4
2.3
2.4
3.4
1.2.3
1.2.4
2.3.4
1.2.3.4

(1.2 et 2.1 est pour moi la même chose)

Merci d'avance,

Dany108
vendredi 29 avril 2005 à 16:39:11 | Re : Algorithme

AdilELHASSOUNI

Salut !
fais un essai et ensuite on peut d'aider
vendredi 29 avril 2005 à 16:50:04 | Re : Algorithme

Vb Lover

cherche plutôt dans les sources, il y en a une assez grande quantité pour tout ce qui est combinatoire...
vendredi 29 avril 2005 à 19:41:46 | Re : Algorithme

dany108

Bonsoir,
il n'est pas dans mes habitudes de poster sans avoir testé et retesté, et visité qq sites.

Ci-dessous mon code :
Dim NombreClient As Integer
Dim Client(100) As Integer

NombreClient = 5

For i = 1 To NombreClient
    Client(i) = i
Next

Open App.Path & "\Resultat.txt" For Output As #1

Message = ""
Compteur = 0

For i = 1 To NombreClient
    Message = Message & Client(i) & vbCrLf
    Compteur = Compteur + 1

    For b = i + 1 To NombreClient
        Message = Message & Client(i) & Client(b) & vbCrLf
        Compteur = Compteur + 1
        For c = b + 1 To NombreClient
            Message = Message & Client(i) & Client(b) & Client(c) & vbCrLf
            Compteur = Compteur + 1
        Next
    Next
Next

Print #1, Message

Close #1

MsgBox Compteur & " combinaisons !!" & vbCrLf & vbCrLf & Message
========================================================
ceci fonctionne sauf que je ne peux utiliser Client(i), Client(b) etc..., car il faut que ce bout de code soit en relatif, sinon si j'ai 3 clients je n'aurai pas le même code que si j'en ai 4, etc....

Si je ne vous semble pas clair, je peux expliquer plus.
Dany108
vendredi 29 avril 2005 à 20:44:53 | Re : Algorithme

Flachy Joe

Et si tu partait plutôt sur un truc en 'arbre' : tu fais une fonction à qui tu envoie 1, elle te renvoie tous les trucs qui commence par 1, en recursif : elle s'envera elle même le 1.2 auquelle elle recherche toutes les suites possible, etc...

C'est juste une idée comme ça.  Ton probleme revient un peu à chercher tous les dossiers et tous les fichiers de tous les repertoires de ton disque : au début tu sait pas combien t'en a mais tu sais combien t'en à à la racine puis dans chaque répertoires de la racine, etc.

Flachy Joe
vendredi 29 avril 2005 à 22:37:43 | Re : Algorithme

dany108

Oui pourquoi pas, je m'y met demain.
Ce soir --> sommeil

Dany108
lundi 2 mai 2005 à 11:24:43 | Re : Algorithme

sembier

Réponse acceptée !
Voila un algo recussif qui marche :

 Type Tinteger
 Tint() As Integer
 
End Type

Private Function enlever_Elt(E As Tinteger, ByVal rang As Integer) As Tinteger
Dim i As Integer
Dim res As Tinteger
ReDim Preserve res.Tint(0 To UBound(E.Tint)) As Integer

res = E
For i = rang + 1 To UBound(E.Tint)
     res.Tint(i - 1) = res.Tint(i)
Next i
ReDim Preserve res.Tint(0 To UBound(E.Tint) - 1) As Integer
enlever_Elt = res

End Function
Private Function egal(E1 As Tinteger, E2 As Tinteger) As Boolean

Dim i, j As Integer
egal = True
If UBound(E1.Tint) <> UBound(E2.Tint) Then
    egal = False
    Exit Function
End If
For i = 0 To UBound(E1.Tint)
     If E1.Tint(i) <> E2.Tint(i) Then egal = False

Next i

End Function
Private Function existeTab(T() As Tinteger) As Boolean

Dim i As Integer
On Error GoTo fin
i = UBound(T)
existeTab = True
Exit Function
fin:
existeTab = False

End Function
Private Sub algo(E As Tinteger, T() As Tinteger)
Dim i, j As Integer
Dim test As Boolean
test = False

If existeTab(T) = True Then
    For i = 0 To UBound(T)
        If egal(E, T(i)) Then test = True
    Next i
End If
'si E n'est pas dans T on le rajoute
If test = False Then
    If existeTab(T) = True Then
        ReDim Preserve T(0 To UBound(T) + 1) As Tinteger
    Else: ReDim T(0) As Tinteger
    End If
    T(UBound(T)) = E
End If
For i = 0 To UBound(E.Tint)
    If UBound(E.Tint) <> 0 Then
        Call algo(enlever_Elt(E, i), T)
    End If
Next i

End Sub



Cette discussion est classée dans : algorithme


Répondre à ce message

Sujets en rapport avec ce message

Algorithme de compression LZW [ par PhiPhi ] Je recherche un algorithme de compression LZW pour une application non commerciale, si possible disponible en vb5.0 ou vb6.0 avec le code source.code Algorithme [ par H@lloWin___HiA ] SalutJe voudrais créer un prog qui calcule un Numero à partir d'un nom.Etant débutant, soyez explicatif svp.Merci@+ Algorithme sous VBA [ par croustibat ] Je dois ecrire algorithme qui permet d'obtenir le resultat d'un programme a partir de données sous excel.Si vous voulez m'aider, demandez moi le fichi Algorithme de création de mots [ par Dany108 ] J'essaie vainement de mettre au point un algorithme qui me créerait tous les mots possibles et inimaginables de 9 lettres à partir d'un lot de 112 let Générateur de Clé + Algorithme de protection [ par Pathy Gord ] Je souhaite développer un Générateur de Clé en VBA afin d'attribuer une licence a mes applications excel, et intégrer cet algorithme de protection dan Urgent:Phonetisation [ par vinns ] Bonjour,Je suis à la recherche d'un algorithme de phonétisation qui me permettrait de comparer deux fichiers comportant des noms , des adresses ....J' Recherche Algorithme pour programme de jeu [ par Nico_dev ] bonjour,Je réalise actuellement un petit programme de jeu (jeu de plateau avec des cases hexagonales.)La maquette de la partie graphique est finie.Ava Recherche Algorithme pour programme de jeu [ par Nico_dev ] bonjour,Je réalise actuellement un petit programme de jeu (jeu de plateau avec des cases hexagonales.)La maquette de la partie graphique est finie.Ava ALGORITHME [ par Tom ] Je suis a la recherche d'un algo "MODULO" qui utilise addition, multiplication et soustraction (pas de division).Et j'en ai vraiment tres besoin.Si vo


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,200 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales