OVH Cloud OVH Cloud

Algorithme

4 réponses
Avatar
Denis.Lair
Bonjour =E0 tous.
Je cherche l'algorithme permettant d'effectuer tous les=20
calculs (sans doublon) selon l'exemple suivant :
Si j'ai 3 nombres A B C, je veux toutes les sommes=20
possibles, donc=20
G1/ A, B, C,
G2/ A+B, A+C, B+C,
G3/ A+B+C
Et si j'ai 5 valeurs A B C D E, les sommes seront
G1/ A, B, C, D, E,
G2/ A+B, A+C, A+D, A+E, B+C, B+D, B+E, C+D, C+E, D+E
G3/ A+B+C, A+B+D, A+B+E, A+C+D, A+C+E, A+D+E, B+C+D,=20
B+C+E, B+D+E, C+D+E
G4/ A+B+C+D, A+B+C+E, A+B+D+E, A+C+D+E, B+C+D+E
G5/ A+B+C+D+E
et que cela marche quel que soit le nombre de valeurs.
Il y a bien quelque part un document d=E9crivant=20
l'algorithme ou mieux, un script VB (ou Basic classique)
qui ferait cela.
Merci d'avance pour vos contributions.
Denis.

4 réponses

Avatar
Sylvie
Bhein ecoute je c pas si sa marche totaleme,t mais c un debut de piste, ....
apparement sa fais qq doublon, mais je t'explique ce que j'ai fais

je consruit un tableu, je calcul la somme de ce tableau, ensuite dans la
deuxiemem boucle je reconstruit le tableau en enlveent chaque fois une autre
case, et je renvoye ce tableau a la meme fonction, au final i lboucle sur
toute les possibiliter... enfin normalement, ;-)

apparement il es pas super mon algo, car il te sort des doublon, regarde si
sa ce trouve c rien de grave, mais j'ai pas trop le temps de chercher, si tu
trouve rien, fais le moi savoir, et j'essaye de chercher l'erreur :-)

Sebastien
a++


'----------------------------------------------------------


Function CalculTotalSomme()

Dim TNB() As Double
Dim i As Integer, j As Integer
ReDim TNB(1 To 4)

TNB(1) = 1
TNB(2) = 5
TNB(3) = 10
TNB(4) = 8

Recursif TNB

End Function
Function Recursif(ByVal pTab As Variant)

Dim i As Integer
Dim lTotal As Double
Dim j As Integer
Dim lTab() As Double
Dim lMessage As String

lTotal = 0
lMessage = ""
'Effectue la somme des valeur du tableau Courent
For i = LBound(pTab) To UBound(pTab)

lTotal = lTotal + pTab(i)
If i = LBound(pTab) Then
lMessage = pTab(i)
Else
lMessage = lMessage & " + " & pTab(i)
End If

Next
Debug.Print lMessage

If LBound(pTab) > UBound(pTab) - 1 Then

Else


For i = LBound(pTab) To UBound(pTab)
ReDim lTab(LBound(pTab) To UBound(pTab) - 1)
For j = LBound(pTab) To UBound(pTab)

If j > i Then
lTab(j - 1) = pTab(j)
ElseIf j < i Then
lTab(j) = pTab(j)
ElseIf j = i Then

End If

Next

Recursif lTab

Next

End If

End Function


'----------------------------------------------------------



"Denis.Lair" a écrit dans le message de news:
036901c36578$4213a350$
Bonjour à tous.
Je cherche l'algorithme permettant d'effectuer tous les
calculs (sans doublon) selon l'exemple suivant :
Si j'ai 3 nombres A B C, je veux toutes les sommes
possibles, donc
G1/ A, B, C,
G2/ A+B, A+C, B+C,
G3/ A+B+C
Et si j'ai 5 valeurs A B C D E, les sommes seront
G1/ A, B, C, D, E,
G2/ A+B, A+C, A+D, A+E, B+C, B+D, B+E, C+D, C+E, D+E
G3/ A+B+C, A+B+D, A+B+E, A+C+D, A+C+E, A+D+E, B+C+D,
B+C+E, B+D+E, C+D+E
G4/ A+B+C+D, A+B+C+E, A+B+D+E, A+C+D+E, B+C+D+E
G5/ A+B+C+D+E
et que cela marche quel que soit le nombre de valeurs.
Il y a bien quelque part un document décrivant
l'algorithme ou mieux, un script VB (ou Basic classique)
qui ferait cela.
Merci d'avance pour vos contributions.
Denis.
Avatar
Youssef
Bonjour

J'ai ecrit un algorithme ,j'ai pas teste je crois que c'est juste, tu me
repond stp si ca marche

T(0)=0
T(1)=A
T(2)=B
T(3)=C
.
.
T(N)=XN
dim i as integer
dim j as integer
dim l as integer
dim V1 as long
dim Resultat(M) as long
''M tu peut le connaître si tu te rappelle la fct mathématique

''sinon tu déclare un tableau dynamique


For i=0 to N
V1=V1+T(i)
For j=i+1 To N
Resultat(l)=V1+T(j)
l=l+1
Next j
Next i

"Denis.Lair" a écrit dans le message de news:
036901c36578$4213a350$
Bonjour à tous.
Je cherche l'algorithme permettant d'effectuer tous les
calculs (sans doublon) selon l'exemple suivant :
Si j'ai 3 nombres A B C, je veux toutes les sommes
possibles, donc
G1/ A, B, C,
G2/ A+B, A+C, B+C,
G3/ A+B+C
Et si j'ai 5 valeurs A B C D E, les sommes seront
G1/ A, B, C, D, E,
G2/ A+B, A+C, A+D, A+E, B+C, B+D, B+E, C+D, C+E, D+E
G3/ A+B+C, A+B+D, A+B+E, A+C+D, A+C+E, A+D+E, B+C+D,
B+C+E, B+D+E, C+D+E
G4/ A+B+C+D, A+B+C+E, A+B+D+E, A+C+D+E, B+C+D+E
G5/ A+B+C+D+E
et que cela marche quel que soit le nombre de valeurs.
Il y a bien quelque part un document décrivant
l'algorithme ou mieux, un script VB (ou Basic classique)
qui ferait cela.
Merci d'avance pour vos contributions.
Denis.
Avatar
Jérôme VERITE
Bonsoir,

juste pour le plaisir un petit bout de code qui remplit la fonction
demandée, même si vous avez
peut être déjà la réponse

Jérôme

Option Explicit

Private Sub Form_Load()
Dim Tablo(3) As Integer
Dim NbElements As Integer ' le nombre d'elements a sommer
Dim TabSortie() As Integer

Tablo(1) = 1
Tablo(2) = 2
Tablo(3) = 3
'Tablo(4) = 4
'Tablo(5) = 5

ReDim TabSortie(0 To 0)

For NbElements = 1 To UBound(Tablo)
Somme Tablo, TabSortie, NbElements
Next NbElements

Debug.Print "debut affichage"
For NbElements = 1 To UBound(TabSortie)
Debug.Print TabSortie(NbElements)
Next NbElements
Unload Me
End Sub

Private Sub Somme(TabEntree() As Integer, TabSortie() As Integer, NbElements
As Integer, Optional PositionInitiale As Integer = 1, Optional DebutSomme As
Integer = 0)
Dim i As Integer

If NbElements = 1 Then
' dernier element a ajouter a la somme
ReDim Preserve TabSortie(UBound(TabSortie) + UBound(TabEntree) + 1 -
PositionInitiale)
For i = PositionInitiale To UBound(TabEntree)
TabSortie(UBound(TabSortie) - UBound(TabEntree) + i) DebutSomme + TabEntree(i)
Next i
Else
For i = PositionInitiale To UBound(TabEntree) + 1 - NbElements
Somme TabEntree, TabSortie, NbElements - 1, i + 1, DebutSomme +
TabEntree(i)
Next i
End If
End Sub

"Denis.Lair" a écrit dans le message de news:
036901c36578$4213a350$
Bonjour à tous.
Je cherche l'algorithme permettant d'effectuer tous les
calculs (sans doublon) selon l'exemple suivant :
Si j'ai 3 nombres A B C, je veux toutes les sommes
possibles, donc
G1/ A, B, C,
G2/ A+B, A+C, B+C,
G3/ A+B+C
Et si j'ai 5 valeurs A B C D E, les sommes seront
G1/ A, B, C, D, E,
G2/ A+B, A+C, A+D, A+E, B+C, B+D, B+E, C+D, C+E, D+E
G3/ A+B+C, A+B+D, A+B+E, A+C+D, A+C+E, A+D+E, B+C+D,
B+C+E, B+D+E, C+D+E
G4/ A+B+C+D, A+B+C+E, A+B+D+E, A+C+D+E, B+C+D+E
G5/ A+B+C+D+E
et que cela marche quel que soit le nombre de valeurs.
Il y a bien quelque part un document décrivant
l'algorithme ou mieux, un script VB (ou Basic classique)
qui ferait cela.
Merci d'avance pour vos contributions.
Denis.
Avatar
Denis.Lair
Merci à toutes et à tous, la version de Jerome me convient
parfaitement.
DL