Opération matricielle

Résolu
kapado
Messages postés
8
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
19 mars 2008
- 17 mars 2008 à 21:29
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
- 19 mars 2008 à 15:57
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

PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
19 mars 2008 à 15:57
si tu le dis

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

bonne continuation
3
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
18 mars 2008 à 07:47
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
0
kapado
Messages postés
8
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
19 mars 2008

18 mars 2008 à 08:14
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
         
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
18 mars 2008 à 08:31
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
18 mars 2008 à 08:32
a(

i


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

18 mars 2008 à 08:34
C'est un métier !

Merci beaucoup et bonne journée
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
18 mars 2008 à 08:48
pense à valider ma réponse (code) pour clore le sujet

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

18 mars 2008 à 09:24
Comment faire pour clore le sujet?
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
18 mars 2008 à 09:28
en cliquant sur le gros bouton vert "réponse acceptée"
0
kapado
Messages postés
8
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
19 mars 2008

18 mars 2008 à 21:43
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.      
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
18 mars 2008 à 22:04
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
0
kapado
Messages postés
8
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
19 mars 2008

19 mars 2008 à 09:38
Donc pour mon cas le plus simple est d'oublier VB?
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
19 mars 2008 à 13:28
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
0
kapado
Messages postés
8
Date d'inscription
dimanche 6 août 2006
Statut
Membre
Dernière intervention
19 mars 2008

19 mars 2008 à 15:09
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...

++
0