Opération matricielle

[Résolu]
Signaler
Messages postés
8
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
19 mars 2008
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Salut à tous,

 
Voici mon souci, j'ai une matrice 2x2 de type [a11,a12;a21,a22]

 
et je voudrais qu'elle devienne 3x3 de type [a11,a12,0;a21,a22,0;0,0,0]

 
Merci d'avance

14 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
si tu le dis

tout code mal fait est une usine à gaz, peu importe le langage......

bonne continuation
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut,

c'est pas clair clair.....

tu peux préciser avec quelques lignes de code stp

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
8
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
19 mars 2008

Alors concrètement, j'ai une matrice Aij :
          a11   a12
[Aij]=
          a21   a22

et je veux qu'elle devienne Bkl :
          a11   a12   0
[Bkl]=a21   a22   0
          0      0        0

Je pense que ça doit être relativement simple, mais n'étant pas du tout developpeur, je galère un peu.

Merci de l'aide
         
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
j'espère que çà pourra t'aider....

Private Sub Form_Load()
'  
déclare
    Dim a() As String

'   redim 2 dimensions
    ReDim a(1 To 3, 1 To 2)

'   remplit
    a(1, 1) = "a11"
    a(1, 2) = "a12"
    
    a(2, 1) = "a21"
    a(2, 2) = "a22"
    
    a(3, 1) = "a31"
    a(3, 2) = "a32"

'   ajoute une dimension
en préservant l'existant
    ReDim Preserve a(1 To 3, 1 To 3)

'   remplit la nouvelle dimention
    Dim i As Integer
    For i = 1 To 3
        a(1, 3) = "0"
    Next i

'   vérif
    MsgBox "a12 ? => " & a(1, 2)
    MsgBox "zéro ? => " & a(1, 3)
End Sub

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
a(

i


3
) = 
"0"
, tu auras bien sûr corrigé ;)
Messages postés
8
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
19 mars 2008

C'est un métier !

Merci beaucoup et bonne journée
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
pense à valider ma réponse (code) pour clore le sujet

bonne journée ;)
Messages postés
8
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
19 mars 2008

Comment faire pour clore le sujet?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
en cliquant sur le gros bouton vert "réponse acceptée"
Messages postés
8
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
19 mars 2008

En fait ça marche pas...

L'algo propose fait :

!a11   a12                  !a11   a12   0
!a21   a22               = !a21   a22   0  
!a31   a32                  !a31   a32   0 

Or moi je voudrais faire cela :
!a11   a12                  !a11   a12   0
!a21   a22               = !a21   a22   0  
                                  !0         0     0 

Visiblement l'option Preserve ne s'applique qu'à la dernière dimension de la table...Malheureusement !

D'autres idées?

Merci.      
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
on ne peut pas redimentionner (AVEC PRESERVE) un champs de plus avec une colonne en plus

MSDN :
De même, le mot clé Preserve ne permet de redimensionner un tableau
qu'en modifiant la limite supérieure ; toute modification de la limite
inférieure provoque une erreur.

Attention   L'instruction ReDim a un effet déclaratif si la
variable déclarée n'existe pas au
<object id= "alink_27" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_27.Click() niveau module] ou au
<object id="alink_28" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_28.Click() niveau procédure]. Si une autre variable
portant le même nom est créée ultérieurement, même avec une
<object id="alink_29" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_29.Click() portée] plus importante, l'instruction
ReDim fait référence à cette dernière et n'engendre pas systématiquement
d'erreur de compilation, même si Option Explicit est activé. Pour
éviter tout conflit de ce type, l'instruction ReDim ne doit pas être
utilisée dans un but déclaratif, mais uniquement pour redimensionner des
tableaux.

<hr size ="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
8
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
19 mars 2008

Donc pour mon cas le plus simple est d'oublier VB?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
non, juste de passer par un TYPE pour na pas avoir à redimentionner plusieurs dimensions à la fois

Option Explicit
Private Type MesDims
    a As String
    b As String
    c As String
End Type

Private Sub Form_Load()
'   déclare
    Dim a() As MesDims

'   redim 2
enregistrements
    ReDim a(1 To 2)

'  
remplit
    a(1).a = "a11"
    a(1).b = "a12"
    
    a(2).a = "a21"
    a(2).b = "a22"

'   ajoute un
enregistrement
    ReDim Preserve a(1 To 3)

'   rempli ce qui valait pour
A31 et A32
    a(3).a = "0" '"a31"
    a(3).b = "!0" 'a32""
    
'   remplit la
dernière "colonne"
    Dim i As Integer
    For i = 1 To 3
        a(i).c = "0"
    Next i

'   vérif
    MsgBox "a12 ? => " & a(1).b
    MsgBox "zéro ? => " & a(1).c
    MsgBox "!zéro ? => " & a(3).b
End Sub

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
8
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
19 mars 2008

Merci pour la réponse.

Par contre je crois que je vais utiliser un autre outil que VB sinon ça va devenir une usine à gaz...

++