Un probleme de procedure

Résolu
Saintspierres Messages postés 3 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 11 décembre 2006 - 8 déc. 2006 à 10:05
Saintspierres Messages postés 3 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 11 décembre 2006 - 11 déc. 2006 à 11:59
Bonjour

Je suis en train de faire un programme pour calculer la somme et le produit de deux matrices et j'ai un problème pour exécuter une procédure qui a pour argument une matrice. Je ne sais pas par quelle syntaxe cette matrice doit etre appellée. Voila mon code source :

Public

Class Form1

Dim i, j, k
As
Integer

Dim Mat1(2, 2)
As
Single

Dim Mat2(2, 2)
As
Single

Dim Mat3(2, 2)
As
Single

Dim Mat4(2, 2)
As
Single

Private
Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click

Me.Close()

End
Sub

Private
Sub Button2_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button2.Clickk = 0

For i = 0
To 2

For j = 0
To 2Mat1(i, j) = GroupBox1.Controls(k).Text

Mat2(i, j) = GroupBox2.Controls(k).Text

k = k + 1

Next

Next

Call Addition(Mat1(2, 2), Mat2(2, 2))

Call Produit(Mat1(2, 2), Mat2(2, 2))TextBox19.Text = Trace(Mat1(2, 2))

TextBox20.Text = Trace(Mat2(2, 2))

k = 0

For i = 0
To 2

For j = 0
To 2GroupBox3.Controls(k).Text = Mat3(i, j)

GroupBox4.Controls(k).Text = Mat4(i, j)

Next

Next

End
Sub

Private
Function Trace(
ByVal Matrice(,)
As
Single)
As
Single

For i = 0
To 2Trace = Trace + Matrice(i, i)

Next

End
Function

Private
Sub Addition(
ByVal Matrice1(,)
As
Single,
ByVal Matrice2(,)
As
Single)

For i = 0
To 2

For j = 0
To 2Mat3(i, j) = Matrice1(i, j) + Matrice2(i, j)

Next

Next

End
Sub

Private
Sub Produit(
ByVal Matrice1(,)
As
Single,
ByVal Matrice2(,)
As
Single)

Dim S
As
Single

For i = 0
To 2

For j = 0
To 2S = 0

For k = 0
To 2S = S + Matrice1(i, k) * Matrice2(k, j)

NextMat4(i, j) = S

Next

Next

End
SubEnd

Class

4 réponses

DavidWhitewater Messages postés 81 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 1 janvier 2010
8 déc. 2006 à 11:23
Salut,

Tu dis :
"Je ne sais pas par quelle syntaxe cette matrice doit etre appellée. Voila mon
code source :"

Je suppose que ton erreure est içi :

Call Addition(Mat1(2, 2), Mat2(2, 2))

Met plutôt :

 Call Addition(Mat1, Mat2)

De plus, la fonction TRACE utilise une variable qui s'appelle également 'TRACE', tu devrais plutôt mettre :

Private Function Trace(ByVal Matrice(,) As Single) As Single
    dim Résultat as single =0
        For i = 0 To 2
           
Résultat
=
Résultat
+ Matrice(i, i)
        Next
    return
Résultat

    End Function

Ca prêt moins à confusion.

A plus.
3
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
8 déc. 2006 à 11:52
Bonjour,
- Vous auriez tout interêt à créer une classe 'Matrice ' (Matrix est déjà pris)
dans lequel vous pourriez implémenter les opérateurs + - * / .

- Votre code est orienté objet mais pas vraiment Objet, ce la ressemble à  du code de programmeur VB6, vous mélangez  l'interface graphique avec le code "metier" et en plus vous utilisez des variables globales (c'est paaaas bien !) .

- Autre piste : Regardez si la classe Matrix (qui sert normalement pour les transformations sur les graphiques) ne peut pas être utilisée en lieu et place.

Jcbé[^]
3
Saintspierres Messages postés 3 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 11 décembre 2006
9 déc. 2006 à 10:51
BONJOUR

Tout d'abord merci pour vos réponses. J'avoue que c'est mon premier programme en vb, donc je suppose qu'il n'est pas trop bien optimisé. Je vais essayer d'utiliser votre séquence et je vous dirais si ca marche.

MERCI A+
Saintspierres
0
Saintspierres Messages postés 3 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 11 décembre 2006
11 déc. 2006 à 11:59
Bonjour


La syntaxe était bien :


Call Addition (Mat1, Mat2)


Merci beaucoup


Saintspierres
0
Rejoignez-nous