Matrice, textbox & Co - Galère !!!

noelaurent Messages postés 13 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 19 juin 2008 - 7 mai 2008 à 20:36
noelaurent Messages postés 13 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 19 juin 2008 - 8 mai 2008 à 09:50
Bonjour,

Après avoir passé de très nombreuses heures sur un problème de débutant, je fais à nouveau appel à notre bienveillante communauté, en essayant de m'expliquer mieux qu'hier.

Je souhaite pouvoir rentrer une matrice en format *.txt dans une textbox pour travailler dessus ensuite.

 C'est à dire, au lieu de dire (dans le programme ci dessous qui fonctionne)




        Dim arr(,) As Double = {{0.0, 0.1, 0.2}, {1.0, 1.1, 1.2}}





dire queque chose du genre :



Dim arr(,) As Double = textbox1.text

cependant à chaque fois, j'ai droit au :

   "Une valeur de type 'String' ne peut pas être convertie en 'Tableau à 2 dimension(s) de Double.  "

Je suis ouvert à toutes vos propositions et je vous remercie pour votre aide ...SOS Galérien débutant !




Mon programme complet pour info :




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

        Dim arr(,) As Double = {{0.0, 0.1, 0.2}, {1.0, 1.1, 1.2}}

        Dim i, j As Integer
        For i = 0 To arr.GetUpperBound(0)
            For j = 0 To arr.GetUpperBound(1)
                RichTextBox1.SelectedText = (arr(i, j) & " - ")
            Next
        Next

        Dim arr2(,) As Double = TransposeMatrix(arr)
        For i = 0 To arr2.GetUpperBound(0)
            For j = 0 To arr2.GetUpperBound(1)
                RichTextBox2.SelectedText = (arr2(i, j) & " - ")
            Next
        Next

    End Sub

    Function TransposeMatrix(ByVal arr(,) As Double) As Double(,)
        Dim startRow As Integer, startCol As Integer
        Dim endRow As Integer, endCol As Integer
        Dim row As Integer, col As Integer

        startRow = arr.GetLowerBound(0)
        endRow = arr.GetUpperBound(0)
        startCol = arr.GetLowerBound(1)
        endCol = arr.GetUpperBound(1)

        Dim res(endCol, endRow) As Double

        For row = startRow To endRow
            For col = startCol To endCol
                res(col, row) = arr.GetValue(row, col)
            Next
        Next

        Return res
    End Function

End Class

3 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
7 mai 2008 à 21:17
Salut,

C'est quoi le but
De creer une matrice a partir d'une chaine de texte.

C'est plus complexe que ca

D'abord il faut que tu creer un tableau avec les bonnes dimensions
Avec des splits et des operations de chaines
tu remplis ton tableau avec une boucle

Exemple
chaine = {{0.0, 0.1, 0.2}, {1.0, 1.1, 1.2}}
chaine = chaine.remove("{{").remove("}}")

tab1 = chaine.split("},{")
--> tab1[0]  =  0.0,0.1,0.2
--> tab1[1] =  1.0,1.1,1.2

Enuite tu splites sur ,
for i = 0 to tab1.length
tab2= tab1[i].split(",")
....remplir la matrice finale
next

voici grossomodo un algo a completer qui devrait t'aider

Bon coding
0
noelaurent Messages postés 13 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 19 juin 2008
8 mai 2008 à 09:49
Bonjour,

Merci beaucoup pour ta réponse !

Après quelques tests, mon problème ne vient pas de la "mise en forme" de la matrice, mais du format.

En effet, que la matrice soit rentrée dans la textbox sous forme {{0.0, 0.1, 0.2}, {1.0, 1.1, 1.2}} ou    0   0,1    0,2
                                                                                                                                                         1   1,1    1,2

mon problème est en fait de convertir l'info d'un tableau en format string une dimension (texte rouge ci dessus quoi) en un format integer double dimension type matrice(i,j).

Ici même si je split, je ne vois pas comment assigner les colonnes et les lignes de façon a ce que l'info soit clairement de type matrice(i,j).

As(vez) tu(vous) une idée ?

Merci encore,

Noé
0
noelaurent Messages postés 13 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 19 juin 2008
8 mai 2008 à 09:50
   désolé le format ok est

    0   0,1    0,2



    1   1,1    1,2
0
Rejoignez-nous