OVH Cloud OVH Cloud

array ou tableau multi pour faire un trie. je narrive pas !!!

11 réponses
Avatar
Pas de Spam
bonjour,

j'ai une liste de valeur string a laquelle je dois fixer 4 nombre (pouvant
avoir des virgules)

par exemple produit valeur1 2 3 4

porte 12,5 5,2 3,21 19
zzzzz 45 68 125 124
chaise 12 5,3 16 19
aaaa 5 3 4 2

ect.....


je voudrait pouvoir enregistre dans un tableau ou array ou autre .........

(les produit lier a leur valeur) pour pouvoir faire un trie de c'est produit

avec comme résultat
aaaa 5 3 4 2
chaise 12 5,3 16 19
porte 12,5 5,2 3,21 19
zzzzz 45 68 125 124

j'avais donc pense a faire une classe XXX avec comme variable
produit,val1,val2,val3,val4
mais je n'arrive pas a la mettre en tableau par la suite pour faire le trie
XXX.produit="chaise" XXX.val1="12.........

sachant que les vals sont définie au fur et a mesure de mon programme donc
je ne peux déclarer avec un dim au début du prog les variable a insérer dans
mon tableau en une ligne du style => val as
array={"produit",12,5.7,3.2,3,4}

voila je ne sais pas si c'est claire mais pas facile a expliquer
un début d'aide please

10 réponses

1 2
Avatar
Eric Guillemette
Si je comprends bien, ta string est délimitée par un caractère, à première
vue, celui de tabulation.

En utilisant la fonction split, ça devrait fonctionner.

ex:
Dim test As String = "porte 12,5 5,2 3,21 19"
Dim Tab() As String = test.Split(vbtab)

array = {Tab(0), Tab(1), Tab(2), Tab(3), Tab(4)}

Eric

"Pas de Spam" wrote in message
news:
bonjour,

j'ai une liste de valeur string a laquelle je dois fixer 4 nombre (pouvant
avoir des virgules)

par exemple produit valeur1 2 3 4

porte 12,5 5,2 3,21 19
zzzzz 45 68 125 124
chaise 12 5,3 16 19
aaaa 5 3 4 2

ect.....


je voudrait pouvoir enregistre dans un tableau ou array ou autre .........

(les produit lier a leur valeur) pour pouvoir faire un trie de c'est
produit

avec comme résultat
aaaa 5 3 4 2
chaise 12 5,3 16 19
porte 12,5 5,2 3,21 19
zzzzz 45 68 125 124

j'avais donc pense a faire une classe XXX avec comme variable
produit,val1,val2,val3,val4
mais je n'arrive pas a la mettre en tableau par la suite pour faire le
trie
XXX.produit="chaise" XXX.val1="12.........

sachant que les vals sont définie au fur et a mesure de mon programme donc
je ne peux déclarer avec un dim au début du prog les variable a insérer
dans mon tableau en une ligne du style => val as
array={"produit",12,5.7,3.2,3,4}

voila je ne sais pas si c'est claire mais pas facile a expliquer
un début d'aide please




Avatar
Pas de Spam
bonjour

et merci mais je tire deja c'est donnée d'un split et c'est pas des tab
c'etait juste pour afficher les donnée que j'avais mis comme ca
mes je sort les info d'une base de donne mais il me faut les mettre en array
pour faire un tri alphabetique

et pour arranger la suite je veux mettre les info dans une array un a un pas
tous d'un coup
comme ca

array = {Tab(0), Tab(1), Tab(2), Tab(3), Tab(4)}

si tu as une autre idee je suis preneur

encore merci

fabrice


"Eric Guillemette" a écrit dans le
message de news:uL9s$
Si je comprends bien, ta string est délimitée par un caractère, à première
vue, celui de tabulation.

En utilisant la fonction split, ça devrait fonctionner.

ex:
Dim test As String = "porte 12,5 5,2 3,21 19"
Dim Tab() As String = test.Split(vbtab)

array = {Tab(0), Tab(1), Tab(2), Tab(3), Tab(4)}

Eric

"Pas de Spam" wrote in message
news:
> bonjour,
>


Avatar
Eric Guillemette
Tu reçois tes données comment?

Tes données sont tous dans une string?
Est-ce qu'il y a quelque chose qui délimite chaque information?

Donne moi le plus d'info sur tes données

Eric

"Pas de Spam" wrote in message
news:cisb4t$t35$
bonjour

et merci mais je tire deja c'est donnée d'un split et c'est pas des tab
c'etait juste pour afficher les donnée que j'avais mis comme ca
mes je sort les info d'une base de donne mais il me faut les mettre en
array
pour faire un tri alphabetique

et pour arranger la suite je veux mettre les info dans une array un a un
pas
tous d'un coup
comme ca

array = {Tab(0), Tab(1), Tab(2), Tab(3), Tab(4)}

si tu as une autre idee je suis preneur

encore merci

fabrice


"Eric Guillemette" a écrit dans le
message de news:uL9s$
Si je comprends bien, ta string est délimitée par un caractère, à
première
vue, celui de tabulation.

En utilisant la fonction split, ça devrait fonctionner.

ex:
Dim test As String = "porte 12,5 5,2 3,21 19"
Dim Tab() As String = test.Split(vbtab)

array = {Tab(0), Tab(1), Tab(2), Tab(3), Tab(4)}

Eric

"Pas de Spam" wrote in message
news:
> bonjour,
>






Avatar
Pas de Spam
"Eric Guillemette" a écrit dans le
message de news:
Tu reçois tes données comment?

Tes données sont tous dans une string?
Est-ce qu'il y a quelque chose qui délimite chaque information?

Donne moi le plus d'info sur tes données

Eric




donc mes données sont dans plein de variable différente mais j'aimerais les
mettre dans un array pour le trie

par exemple je tire la première variable d'une string et les 4 variable
suivant de variable single
et quelque fois d'un datgrid

pour rentrée un peu plus dans le détail voila au début comment je pensais
faire mais ça marche pas sur le fram 1.0 SP3

dim myarr as arraylist
dim t(4) as object

t(0)="boknior"
t(1)
t(2)%.4
t(3)=5
t(4)=3.4
myarr.add(t)
t(0)="aaaa"
t(1)=5
t(2)=5.4
t(3)T
t(4)=3
myarr.add(t)

myarr.sort

mais dans myarr il y a deux fois "aaaa" et mon "boknior" avec c'est valeur a
disparue....

en gros c'est pas important de savoir d'ou vienne les données le but est de
les mètres toutes dans une seule variable qui me permetrait de faire un tri
juste sur les strings en gardant les valeur associer a chaque string

je sais pas si c'est assez claire ??

fabrice
Avatar
Eric Guillemette
OK !! Je comprends ce que tu cherches à faire !! :)

Pour faire un sort dans un arraylist, il faut utiliser une classe
implémentant l'interface IComparable. J'ai codé rapidement une classe
implémentant ce que tu recherches:

Public Class ArrayListItem
Implements IComparable
Private _Nom As String
Private _Nombre As Integer
Public ReadOnly Property Nom() As String
Get
Return _Nom
End Get
End Property
Public ReadOnly Property Nombre() As Integer
Get
Return _Nombre
End Get
End Property
Public Sub New(ByVal s As String, ByVal i As Integer)
_Nom = s
_Nombre = i
End Sub
Public Function CompareTo(ByVal obj As Object) As Integer Implements
System.IComparable.CompareTo
If obj.GetType Is GetType(ArrayListItem) Then
Return _Nom.CompareTo(DirectCast(obj, ArrayListItem).Nom)
End If
Return 0
End Function
End Class

Dans un bouton sur un formulaire, si tu mets le code suivant, est-ce que ça
fait cve que tu recherches?

Dim arr As New ArrayList
arr.Add(New ArrayListItem("test", 1))
arr.Add(New ArrayListItem("bbbb", 2))
arr.Add(New ArrayListItem("tttt", 3))
arr.Add(New ArrayListItem("aaaa", 4))
arr.Sort()
For Each ai As ArrayListItem In arr
MessageBox.Show(String.Format("Nom : {0}, Nombre : {1}", ai.Nom,
ai.Nombre))
Next


Eric

"Pas de Spam" wrote in message
news:%23$

"Eric Guillemette" a écrit dans le
message de news:
Tu reçois tes données comment?

Tes données sont tous dans une string?
Est-ce qu'il y a quelque chose qui délimite chaque information?

Donne moi le plus d'info sur tes données

Eric




donc mes données sont dans plein de variable différente mais j'aimerais
les mettre dans un array pour le trie

par exemple je tire la première variable d'une string et les 4 variable
suivant de variable single
et quelque fois d'un datgrid

pour rentrée un peu plus dans le détail voila au début comment je pensais
faire mais ça marche pas sur le fram 1.0 SP3

dim myarr as arraylist
dim t(4) as object

t(0)="boknior"
t(1)
t(2)%.4
t(3)=5
t(4)=3.4
myarr.add(t)
t(0)="aaaa"
t(1)=5
t(2)=5.4
t(3)T
t(4)=3
myarr.add(t)

myarr.sort

mais dans myarr il y a deux fois "aaaa" et mon "boknior" avec c'est valeur
a disparue....

en gros c'est pas important de savoir d'ou vienne les données le but est
de les mètres toutes dans une seule variable qui me permetrait de faire un
tri juste sur les strings en gardant les valeur associer a chaque string

je sais pas si c'est assez claire ??

fabrice



Avatar
Pas de Spam
ok je vais tester ce soir et te tiens au courant
ce soir ou demain

a+ et encore merci



"Eric Guillemette" a écrit dans le
message de news: %23K$
OK !! Je comprends ce que tu cherches à faire !! :)

Pour faire un sort dans un arraylist, il faut utiliser une classe
implémentant l'interface IComparable. J'ai codé rapidement une classe
implémentant ce que tu recherches:

Public Class ArrayListItem
Implements IComparable
Private _Nom As String
Private _Nombre As Integer
Public ReadOnly Property Nom() As String
Get
Return _Nom
End Get
End Property
Public ReadOnly Property Nombre() As Integer
Get
Return _Nombre
End Get
End Property
Public Sub New(ByVal s As String, ByVal i As Integer)
_Nom = s
_Nombre = i
End Sub
Public Function CompareTo(ByVal obj As Object) As Integer Implements
System.IComparable.CompareTo
If obj.GetType Is GetType(ArrayListItem) Then
Return _Nom.CompareTo(DirectCast(obj, ArrayListItem).Nom)
End If
Return 0
End Function
End Class

Dans un bouton sur un formulaire, si tu mets le code suivant, est-ce que
ça fait cve que tu recherches?

Dim arr As New ArrayList
arr.Add(New ArrayListItem("test", 1))
arr.Add(New ArrayListItem("bbbb", 2))
arr.Add(New ArrayListItem("tttt", 3))
arr.Add(New ArrayListItem("aaaa", 4))
arr.Sort()
For Each ai As ArrayListItem In arr
MessageBox.Show(String.Format("Nom : {0}, Nombre : {1}", ai.Nom,
ai.Nombre))
Next


Eric

"Pas de Spam" wrote in message
news:%23$

"Eric Guillemette" a écrit dans le
message de news:
Tu reçois tes données comment?

Tes données sont tous dans une string?
Est-ce qu'il y a quelque chose qui délimite chaque information?

Donne moi le plus d'info sur tes données

Eric




donc mes données sont dans plein de variable différente mais j'aimerais
les mettre dans un array pour le trie

par exemple je tire la première variable d'une string et les 4 variable
suivant de variable single
et quelque fois d'un datgrid

pour rentrée un peu plus dans le détail voila au début comment je pensais
faire mais ça marche pas sur le fram 1.0 SP3

dim myarr as arraylist
dim t(4) as object

t(0)="boknior"
t(1)
t(2)%.4
t(3)=5
t(4)=3.4
myarr.add(t)
t(0)="aaaa"
t(1)=5
t(2)=5.4
t(3)T
t(4)=3
myarr.add(t)

myarr.sort

mais dans myarr il y a deux fois "aaaa" et mon "boknior" avec c'est
valeur a disparue....

en gros c'est pas important de savoir d'ou vienne les données le but est
de les mètres toutes dans une seule variable qui me permetrait de faire
un tri juste sur les strings en gardant les valeur associer a chaque
string

je sais pas si c'est assez claire ??

fabrice







Avatar
Zazar
Bonsoir,

t(0)="boknior"
t(1)
t(2)%.4
t(3)=5
t(4)=3.4
myarr.add(t)
t(0)="aaaa"
t(1)=5
t(2)=5.4
t(3)T
t(4)=3
myarr.add(t)

myarr.sort

mais dans myarr il y a deux fois "aaaa" et mon "boknior" avec c'est valeur


a
disparue....



Le problème de ce code est que vous n'avez qu'un seul tableau, et que la
seconde partie des affectations écrase la première. Il vous manque un t new object(4) aprés le premier Add(). Ca fonctionnera, reste que ce n'est
pas trés propre. Au lieu d'un tableau d'object, il vous faudrait une classe
avec des propriétés correctement définies (ce que vous a montré Eric
Guillemette), et au lieu d'un ArrayList il faudrait une collection fortement
typée. Mais ça c'est la seconde étape.

Bon courage,

--
Zazar
Avatar
Pas de Spam
cher zazar,

c'est vrai que le code n'est pas propre mais c'etait juste pour expliquer le
principe de ce que je voulais
car effectivement dans mon code reel comme je l'expliquais au debut j'ai
utiliser une class
pour definir mon tt

je me retrouver donc avec tt.produit, tt.val1,tt.val2 ect....

pour ca ca marchais mais je n'arrivais pas a le mettre en array
pourquoi array ?? et bien car il y une fonction trie .

j'ai essayer aussi en creant ma propre fonction de trie avec des swap pour
les variable en remontant au fur et a mesure mes variable plus petite avec
une boucle
mais ma fonction prend plus de temps que celle du array c'est dionc pour ca
que je suis rester la dessus
mais tu me parle de collection typé tu peux m'en dire un peu plus ou alors
me rediriger sur un exemple pour que je puisse voir de ce que tu me parle

merci pour les infos

ps: pour eric j'ai pas encore tester je teste dans la matinée

fabrice



Le problème de ce code est que vous n'avez qu'un seul tableau, et que la
seconde partie des affectations écrase la première. Il vous manque un t > new object(4) aprés le premier Add(). Ca fonctionnera, reste que ce n'est
pas trés propre. Au lieu d'un tableau d'object, il vous faudrait une


classe
avec des propriétés correctement définies (ce que vous a montré Eric
Guillemette), et au lieu d'un ArrayList il faudrait une collection


fortement
typée. Mais ça c'est la seconde étape.

Bon courage,

--
Zazar




Avatar
Pas de Spam
j'ai oublier de dire que c'etait volontaire l'ecrasement de la variable tt
car une fois enregistre avec le add je n'en avais plus besoins

"Zazar" a écrit dans le message
de news:
Bonsoir,

> t(0)="boknior"
> t(1)
> t(2)%.4
> t(3)=5
> t(4)=3.4
> myarr.add(t)
> t(0)="aaaa"
> t(1)=5
> t(2)=5.4
> t(3)T
> t(4)=3
> myarr.add(t)
>
> myarr.sort
>
> mais dans myarr il y a deux fois "aaaa" et mon "boknior" avec c'est


valeur
a
> disparue....

Le problème de ce code est que vous n'avez qu'un seul tableau, et que la
seconde partie des affectations écrase la première. Il vous manque un t > new object(4) aprés le premier Add(). Ca fonctionnera, reste que ce n'est
pas trés propre. Au lieu d'un tableau d'object, il vous faudrait une


classe
avec des propriétés correctement définies (ce que vous a montré Eric
Guillemette), et au lieu d'un ArrayList il faudrait une collection


fortement
typée. Mais ça c'est la seconde étape.

Bon courage,

--
Zazar




Avatar
Pas de Spam
bizard bizard!


le "Implements IComparable"

ne passe pas icomparable est souligner en erreur et ne veux pas passer
donc la function compareTO qui suit ne passe pas non plus

il me dit que tri.arraylistitem doit implementer Oveeridable overlaods
finction compareto....

quand je met le curseur sur le "Comparable" souligner du implements

je suis encore en fram 1.0 avec le SP3 ca peux venir de la ou pas ???
1 2