DD05
Messages postés53Date d'inscriptionmercredi 11 août 2004StatutMembreDernière intervention11 juin 2010
-
29 nov. 2007 à 15:02
DD05
Messages postés53Date d'inscriptionmercredi 11 août 2004StatutMembreDernière intervention11 juin 2010
-
29 nov. 2007 à 19:52
Bonjour,
J'ai trouvé ce code sur ce site écrit par by Lover. Il est très bien fait pour ce que je désire faire. Merci à by Lover.
La fonction Add permet de réaliser la somme ou la soustraction de deux matrices carrées.
Donc en argument d'entrée, j'ai les matrices M1 et M2 puis le boolean indiquant s'il s'agit d'une somme ou soustraction.
Comment appeller la fonction Add dans mon programme ?
Mon problème est que je n'arrive pas à trouver les arguments à mettre entre parenthèse de Add ( ) lorsque je l'appel.
Merci.
DD05
M1 M2
|1 2| |3 4|
|7 5| |2 9|
La somme de M1 + M2 donne :
|4 6|
|9 14|
Public Function Add(ByRef M1() As Double, ByRef M2() As Double, _
Optional ByVal Addition As Boolean = True) As Double()
Dim Resultat() As Double
Dim i As Integer, j As Integer
Dim n1 As Integer, n2 As Integer
' Opération possible ?
n1 = UBound(M1, 1)
n2 = UBound(M1, 2)
If n1 <> UBound(M2, 1) Or n2 <> UBound(M2, 2) Then Exit Function
ReDim Resultat(n1, n2)
' Resultat(ij) = M1(ij) +- M2 (ij)
For i = 1 To n1
For j = 1 To n2
If Addition Then
Resultat(i, j) = M1(i, j) + M2(i, j)
Else
Resultat(i, j) = M1(i, j) - M2(i, j)
End If
Next
Next
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 29 nov. 2007 à 17:57
Salut,
C'est du VB6. Tu aurais dû poster sur vbfrance.
ByRef, ça veut dire que tu passe les arguments par référence. C'est ce
qui se passe par défaut quand on ne met pas ByRef (Donc ByRef ne sert
qu'à être plus clair...). On peut mettre ByVal à la place de ByRef pour
faire passer les arguements par valeur. Plus d'infos ici.
J'aime pas trop le code ci-dessus rapport à la façon dont il gère la
borne inférieure... Rien ne dit que les matrices sont indexées à partir
de 1. Il aurait pu utiliser LBound. Mais passons. En plus j'oublie
toujours si ça commence à 0 ou à 1 par défaut en VB6. En plus y a une
option qui permet de changer le comportement... Je divague beaucoup là.
Alors pour utiliser ton code, tu dois faire des matrice, autrement dit
des tableaux multidimensionnels. L'aide de la msdn sur le sujet est ici. M(i,j), on peut par exemple dire que c'est le coef de la ième ligne, jème colonne.
' Je met des To pour préciser la borne inférieur sans m'occuper des valeurs par défaut et autres options.
Dim M1 As Double(1 To 2, 1 To 2)
Dim M2 As Double(1 To 2, 1 To 2)
Dim M3 As Double()
M1(1,1)=1
M1(1,2)=2
M1(2,1)=7
M1(2,2)=5
Pareil pour M2.
Puis tu appel ta fonction :
M3 = Add(M1, M2)
<hr size="2" width="100%" />3ème année en ecole d'ingé d'info cherche stage de 4 mois à partir du 01/04/08