Je travaille avec un r=E9seau routier dans lequel un usager entre un
num=E9ro d'intersection et ca lui retourne le nom des rues connect=E9es
=E0 cette intersection. Le probleme est que si c'est une intersection au
milieu d'une grande rue, les troncons de rue AVANT et APRES
l'intersection peuvent avoir le m=EAme nom, et ca me retourne donc deux
fois le m=EAme nom de rue dans mon r=E9sultat (une collection).
J'ai essay=E9 de faire une boucle consistant =E0 aller chercher le nom de
la rue (variable NomRue) d'un troncon, puis l'ajouter =E0 la collection
mRue (mRue.Add(NomRue)), puis ajouter un IF permettant de dire que si
ma variable NomRue =3D mRue.Item(x), je ne l'ajoute pas, mais
n=E9cessairement, ca va refuser de l'ajouter d=E8s la premi=E8re fois...
Je ne sais pas si c'est clair, c'est dur =E0 expliquer
Si quelqu'un connait un moyen de ne pas ajouter plus d'une fois le meme
item a une collection...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Millox Frédéric
Salut Debdrai,
D'après ce que tu marques, j'ai fait ce petit exemple :
Dim c As New Collection Dim list As String() = {"rue1", "rue2", "rue1", "rue3"} Dim NomRue As String Dim ajout As Boolean = True
' Init. c.Add(list(0))
For i As Integer = 1 To list.Length - 1 ajout = True NomRue = list(i) For j As Integer = 1 To c.Count If NomRue = c.Item(j) Then ajout = False End If Next If ajout Then c.Add(NomRue) Next
MsgBox(c.Count) me retourne 3;
Tiens moi au courant si c'est complètement hors sujet.
Voilà , a+.
-- fmillox
"" a écrit :
Salut a tous !
Je travaille avec un réseau routier dans lequel un usager entre un numéro d'intersection et ca lui retourne le nom des rues connectées à cette intersection. Le probleme est que si c'est une intersection au milieu d'une grande rue, les troncons de rue AVANT et APRES l'intersection peuvent avoir le même nom, et ca me retourne donc deux fois le même nom de rue dans mon résultat (une collection).
J'ai essayé de faire une boucle consistant à aller chercher le nom de la rue (variable NomRue) d'un troncon, puis l'ajouter à la collection mRue (mRue.Add(NomRue)), puis ajouter un IF permettant de dire que si ma variable NomRue = mRue.Item(x), je ne l'ajoute pas, mais nécessairement, ca va refuser de l'ajouter dès la première fois... Je ne sais pas si c'est clair, c'est dur à expliquer
Si quelqu'un connait un moyen de ne pas ajouter plus d'une fois le meme item a une collection...
Merci !
Deb
Salut Debdrai,
D'après ce que tu marques, j'ai fait ce petit exemple :
Dim c As New Collection
Dim list As String() = {"rue1", "rue2", "rue1", "rue3"}
Dim NomRue As String
Dim ajout As Boolean = True
' Init.
c.Add(list(0))
For i As Integer = 1 To list.Length - 1
ajout = True
NomRue = list(i)
For j As Integer = 1 To c.Count
If NomRue = c.Item(j) Then
ajout = False
End If
Next
If ajout Then c.Add(NomRue)
Next
MsgBox(c.Count) me retourne 3;
Tiens moi au courant si c'est complètement hors sujet.
Voilà , a+.
--
fmillox
"debdrai@hotmail.com" a écrit :
Salut a tous !
Je travaille avec un réseau routier dans lequel un usager entre un
numéro d'intersection et ca lui retourne le nom des rues connectées
à cette intersection. Le probleme est que si c'est une intersection au
milieu d'une grande rue, les troncons de rue AVANT et APRES
l'intersection peuvent avoir le même nom, et ca me retourne donc deux
fois le même nom de rue dans mon résultat (une collection).
J'ai essayé de faire une boucle consistant à aller chercher le nom de
la rue (variable NomRue) d'un troncon, puis l'ajouter à la collection
mRue (mRue.Add(NomRue)), puis ajouter un IF permettant de dire que si
ma variable NomRue = mRue.Item(x), je ne l'ajoute pas, mais
nécessairement, ca va refuser de l'ajouter dès la première fois...
Je ne sais pas si c'est clair, c'est dur à expliquer
Si quelqu'un connait un moyen de ne pas ajouter plus d'une fois le meme
item a une collection...
D'après ce que tu marques, j'ai fait ce petit exemple :
Dim c As New Collection Dim list As String() = {"rue1", "rue2", "rue1", "rue3"} Dim NomRue As String Dim ajout As Boolean = True
' Init. c.Add(list(0))
For i As Integer = 1 To list.Length - 1 ajout = True NomRue = list(i) For j As Integer = 1 To c.Count If NomRue = c.Item(j) Then ajout = False End If Next If ajout Then c.Add(NomRue) Next
MsgBox(c.Count) me retourne 3;
Tiens moi au courant si c'est complètement hors sujet.
Voilà , a+.
-- fmillox
"" a écrit :
Salut a tous !
Je travaille avec un réseau routier dans lequel un usager entre un numéro d'intersection et ca lui retourne le nom des rues connectées à cette intersection. Le probleme est que si c'est une intersection au milieu d'une grande rue, les troncons de rue AVANT et APRES l'intersection peuvent avoir le même nom, et ca me retourne donc deux fois le même nom de rue dans mon résultat (une collection).
J'ai essayé de faire une boucle consistant à aller chercher le nom de la rue (variable NomRue) d'un troncon, puis l'ajouter à la collection mRue (mRue.Add(NomRue)), puis ajouter un IF permettant de dire que si ma variable NomRue = mRue.Item(x), je ne l'ajoute pas, mais nécessairement, ca va refuser de l'ajouter dès la première fois... Je ne sais pas si c'est clair, c'est dur à expliquer
Si quelqu'un connait un moyen de ne pas ajouter plus d'une fois le meme item a une collection...
Merci !
Deb
Millox Frédéric
Oups , ca marche mais ca n'est pas très propre au niveau de l'algo.
Donc petit rectificatif :
Dim c As New Collection Dim list As String() = {"rue1", "rue2", "rue1", "rue3"} Dim NomRue As String Dim ajout As Boolean
For i As Integer = 0 To list.Length - 1 ajout = True NomRue = list(i) For j As Integer = 1 To c.Count If NomRue = c.Item(j) Then ajout = False End If Next If ajout Then c.Add(NomRue) Next
Console.WriteLine(c.Count) For i As Integer = 1 To c.Count Console.WriteLine(CStr(c.Item(i))) Next
a+
-- fmillox
"Millox Frédéric" a écrit :
Salut Debdrai,
D'après ce que tu marques, j'ai fait ce petit exemple :
Dim c As New Collection Dim list As String() = {"rue1", "rue2", "rue1", "rue3"} Dim NomRue As String Dim ajout As Boolean = True
' Init. c.Add(list(0))
For i As Integer = 1 To list.Length - 1 ajout = True NomRue = list(i) For j As Integer = 1 To c.Count If NomRue = c.Item(j) Then ajout = False End If Next If ajout Then c.Add(NomRue) Next
MsgBox(c.Count) me retourne 3;
Tiens moi au courant si c'est complètement hors sujet.
Voilà , a+.
-- fmillox
"" a écrit :
> Salut a tous ! > > Je travaille avec un réseau routier dans lequel un usager entre un > numéro d'intersection et ca lui retourne le nom des rues connectées > à cette intersection. Le probleme est que si c'est une intersection au > milieu d'une grande rue, les troncons de rue AVANT et APRES > l'intersection peuvent avoir le même nom, et ca me retourne donc deux > fois le même nom de rue dans mon résultat (une collection). > > J'ai essayé de faire une boucle consistant à aller chercher le nom de > la rue (variable NomRue) d'un troncon, puis l'ajouter à la collection > mRue (mRue.Add(NomRue)), puis ajouter un IF permettant de dire que si > ma variable NomRue = mRue.Item(x), je ne l'ajoute pas, mais > nécessairement, ca va refuser de l'ajouter dès la première fois... > Je ne sais pas si c'est clair, c'est dur à expliquer > > Si quelqu'un connait un moyen de ne pas ajouter plus d'une fois le meme > item a une collection... > > Merci ! > > Deb > >
Oups , ca marche mais ca n'est pas très propre au niveau de l'algo.
Donc petit rectificatif :
Dim c As New Collection
Dim list As String() = {"rue1", "rue2", "rue1", "rue3"}
Dim NomRue As String
Dim ajout As Boolean
For i As Integer = 0 To list.Length - 1
ajout = True
NomRue = list(i)
For j As Integer = 1 To c.Count
If NomRue = c.Item(j) Then
ajout = False
End If
Next
If ajout Then c.Add(NomRue)
Next
Console.WriteLine(c.Count)
For i As Integer = 1 To c.Count
Console.WriteLine(CStr(c.Item(i)))
Next
a+
--
fmillox
"Millox Frédéric" a écrit :
Salut Debdrai,
D'après ce que tu marques, j'ai fait ce petit exemple :
Dim c As New Collection
Dim list As String() = {"rue1", "rue2", "rue1", "rue3"}
Dim NomRue As String
Dim ajout As Boolean = True
' Init.
c.Add(list(0))
For i As Integer = 1 To list.Length - 1
ajout = True
NomRue = list(i)
For j As Integer = 1 To c.Count
If NomRue = c.Item(j) Then
ajout = False
End If
Next
If ajout Then c.Add(NomRue)
Next
MsgBox(c.Count) me retourne 3;
Tiens moi au courant si c'est complètement hors sujet.
Voilà , a+.
--
fmillox
"debdrai@hotmail.com" a écrit :
> Salut a tous !
>
> Je travaille avec un réseau routier dans lequel un usager entre un
> numéro d'intersection et ca lui retourne le nom des rues connectées
> à cette intersection. Le probleme est que si c'est une intersection au
> milieu d'une grande rue, les troncons de rue AVANT et APRES
> l'intersection peuvent avoir le même nom, et ca me retourne donc deux
> fois le même nom de rue dans mon résultat (une collection).
>
> J'ai essayé de faire une boucle consistant à aller chercher le nom de
> la rue (variable NomRue) d'un troncon, puis l'ajouter à la collection
> mRue (mRue.Add(NomRue)), puis ajouter un IF permettant de dire que si
> ma variable NomRue = mRue.Item(x), je ne l'ajoute pas, mais
> nécessairement, ca va refuser de l'ajouter dès la première fois...
> Je ne sais pas si c'est clair, c'est dur à expliquer
>
> Si quelqu'un connait un moyen de ne pas ajouter plus d'une fois le meme
> item a une collection...
>
> Merci !
>
> Deb
>
>
Oups , ca marche mais ca n'est pas très propre au niveau de l'algo.
Donc petit rectificatif :
Dim c As New Collection Dim list As String() = {"rue1", "rue2", "rue1", "rue3"} Dim NomRue As String Dim ajout As Boolean
For i As Integer = 0 To list.Length - 1 ajout = True NomRue = list(i) For j As Integer = 1 To c.Count If NomRue = c.Item(j) Then ajout = False End If Next If ajout Then c.Add(NomRue) Next
Console.WriteLine(c.Count) For i As Integer = 1 To c.Count Console.WriteLine(CStr(c.Item(i))) Next
a+
-- fmillox
"Millox Frédéric" a écrit :
Salut Debdrai,
D'après ce que tu marques, j'ai fait ce petit exemple :
Dim c As New Collection Dim list As String() = {"rue1", "rue2", "rue1", "rue3"} Dim NomRue As String Dim ajout As Boolean = True
' Init. c.Add(list(0))
For i As Integer = 1 To list.Length - 1 ajout = True NomRue = list(i) For j As Integer = 1 To c.Count If NomRue = c.Item(j) Then ajout = False End If Next If ajout Then c.Add(NomRue) Next
MsgBox(c.Count) me retourne 3;
Tiens moi au courant si c'est complètement hors sujet.
Voilà , a+.
-- fmillox
"" a écrit :
> Salut a tous ! > > Je travaille avec un réseau routier dans lequel un usager entre un > numéro d'intersection et ca lui retourne le nom des rues connectées > à cette intersection. Le probleme est que si c'est une intersection au > milieu d'une grande rue, les troncons de rue AVANT et APRES > l'intersection peuvent avoir le même nom, et ca me retourne donc deux > fois le même nom de rue dans mon résultat (une collection). > > J'ai essayé de faire une boucle consistant à aller chercher le nom de > la rue (variable NomRue) d'un troncon, puis l'ajouter à la collection > mRue (mRue.Add(NomRue)), puis ajouter un IF permettant de dire que si > ma variable NomRue = mRue.Item(x), je ne l'ajoute pas, mais > nécessairement, ca va refuser de l'ajouter dès la première fois... > Je ne sais pas si c'est clair, c'est dur à expliquer > > Si quelqu'un connait un moyen de ne pas ajouter plus d'une fois le meme > item a une collection... > > Merci ! > > Deb > >
debdrai
Salut Fred,
Impeccable ! Ta méthode fonctionne parfaitement, merci d'avoir pris le temps d'avoir écrit ce code !
Deb
Salut Fred,
Impeccable ! Ta méthode fonctionne parfaitement, merci d'avoir pris le
temps d'avoir écrit ce code !
Impeccable ! Ta méthode fonctionne parfaitement, merci d'avoir pris le temps d'avoir écrit ce code !
Deb
Millox Frédéric
Pas de problème pour l'aide et si tu veux , rajoute cette ligne de code " exit For " juste après " ajout = False " ca te fera gagner un peu de temps de calcul si l'appli tourne avec beaucoup de données.
a+
-- fmillox
"" a écrit :
Salut Fred,
Impeccable ! Ta méthode fonctionne parfaitement, merci d'avoir pris le temps d'avoir écrit ce code !
Deb
Pas de problème pour l'aide et si tu veux , rajoute cette ligne de code "
exit For " juste après " ajout = False " ca te fera gagner un peu de temps de
calcul si l'appli tourne avec beaucoup de données.
a+
--
fmillox
"debdrai@hotmail.com" a écrit :
Salut Fred,
Impeccable ! Ta méthode fonctionne parfaitement, merci d'avoir pris le
temps d'avoir écrit ce code !
Pas de problème pour l'aide et si tu veux , rajoute cette ligne de code " exit For " juste après " ajout = False " ca te fera gagner un peu de temps de calcul si l'appli tourne avec beaucoup de données.
a+
-- fmillox
"" a écrit :
Salut Fred,
Impeccable ! Ta méthode fonctionne parfaitement, merci d'avoir pris le temps d'avoir écrit ce code !
Deb
Zoury
Salut Deb ! :O)
Tu pourrais également employé une StringCollection pour stockée tes chaines et testé l'existence de celles-ci à l'aide de la fonction IndexOf() : '*** Option Explicit On
Imports System.Collections.Specialized
Module MainModule
Public Sub Main()
Dim sc As StringCollection sc = New StringCollection
' on ajoute des items de départ pour le test sc.AddRange(New String() {"item 1", "item 2", "item 3"})
' on tente l'ajout d'items supplémentaires ' en testant leur existance par le biais ' de la fonction IndexOf AddItem(sc, "item 4") AddItem(sc, "item 3") AddItem(sc, "item 5")
End Sub
Private Function AddItem(ByVal sc As StringCollection, ByVal item As String) As Int32
If (sc.IndexOf(item) = -1) Then Console.WriteLine("{0} à été ajouté à la collection", item) Return sc.Add(item) End If
Console.WriteLine("{0} est déjà dans la collection", item) Return -1
End Function
End Module '***
-- Cordialement Yanick MVP pour Visual Basic a écrit dans le message de news: Salut a tous !
Je travaille avec un réseau routier dans lequel un usager entre un numéro d'intersection et ca lui retourne le nom des rues connectées à cette intersection. Le probleme est que si c'est une intersection au milieu d'une grande rue, les troncons de rue AVANT et APRES l'intersection peuvent avoir le même nom, et ca me retourne donc deux fois le même nom de rue dans mon résultat (une collection).
J'ai essayé de faire une boucle consistant à aller chercher le nom de la rue (variable NomRue) d'un troncon, puis l'ajouter à la collection mRue (mRue.Add(NomRue)), puis ajouter un IF permettant de dire que si ma variable NomRue = mRue.Item(x), je ne l'ajoute pas, mais nécessairement, ca va refuser de l'ajouter dès la première fois... Je ne sais pas si c'est clair, c'est dur à expliquer
Si quelqu'un connait un moyen de ne pas ajouter plus d'une fois le meme item a une collection...
Merci !
Deb
Salut Deb ! :O)
Tu pourrais également employé une StringCollection pour stockée tes chaines
et testé l'existence de celles-ci à l'aide de la fonction IndexOf() :
'***
Option Explicit On
Imports System.Collections.Specialized
Module MainModule
Public Sub Main()
Dim sc As StringCollection
sc = New StringCollection
' on ajoute des items de départ pour le test
sc.AddRange(New String() {"item 1", "item 2", "item 3"})
' on tente l'ajout d'items supplémentaires
' en testant leur existance par le biais
' de la fonction IndexOf
AddItem(sc, "item 4")
AddItem(sc, "item 3")
AddItem(sc, "item 5")
End Sub
Private Function AddItem(ByVal sc As StringCollection, ByVal item As
String) As Int32
If (sc.IndexOf(item) = -1) Then
Console.WriteLine("{0} à été ajouté à la collection", item)
Return sc.Add(item)
End If
Console.WriteLine("{0} est déjà dans la collection", item)
Return -1
End Function
End Module
'***
--
Cordialement
Yanick
MVP pour Visual Basic
<debdrai@hotmail.com> a écrit dans le message de
news:1119901554.626212.252460@g49g2000cwa.googlegroups.com...
Salut a tous !
Je travaille avec un réseau routier dans lequel un usager entre un
numéro d'intersection et ca lui retourne le nom des rues connectées
à cette intersection. Le probleme est que si c'est une intersection au
milieu d'une grande rue, les troncons de rue AVANT et APRES
l'intersection peuvent avoir le même nom, et ca me retourne donc deux
fois le même nom de rue dans mon résultat (une collection).
J'ai essayé de faire une boucle consistant à aller chercher le nom de
la rue (variable NomRue) d'un troncon, puis l'ajouter à la collection
mRue (mRue.Add(NomRue)), puis ajouter un IF permettant de dire que si
ma variable NomRue = mRue.Item(x), je ne l'ajoute pas, mais
nécessairement, ca va refuser de l'ajouter dès la première fois...
Je ne sais pas si c'est clair, c'est dur à expliquer
Si quelqu'un connait un moyen de ne pas ajouter plus d'une fois le meme
item a une collection...
Tu pourrais également employé une StringCollection pour stockée tes chaines et testé l'existence de celles-ci à l'aide de la fonction IndexOf() : '*** Option Explicit On
Imports System.Collections.Specialized
Module MainModule
Public Sub Main()
Dim sc As StringCollection sc = New StringCollection
' on ajoute des items de départ pour le test sc.AddRange(New String() {"item 1", "item 2", "item 3"})
' on tente l'ajout d'items supplémentaires ' en testant leur existance par le biais ' de la fonction IndexOf AddItem(sc, "item 4") AddItem(sc, "item 3") AddItem(sc, "item 5")
End Sub
Private Function AddItem(ByVal sc As StringCollection, ByVal item As String) As Int32
If (sc.IndexOf(item) = -1) Then Console.WriteLine("{0} à été ajouté à la collection", item) Return sc.Add(item) End If
Console.WriteLine("{0} est déjà dans la collection", item) Return -1
End Function
End Module '***
-- Cordialement Yanick MVP pour Visual Basic a écrit dans le message de news: Salut a tous !
Je travaille avec un réseau routier dans lequel un usager entre un numéro d'intersection et ca lui retourne le nom des rues connectées à cette intersection. Le probleme est que si c'est une intersection au milieu d'une grande rue, les troncons de rue AVANT et APRES l'intersection peuvent avoir le même nom, et ca me retourne donc deux fois le même nom de rue dans mon résultat (une collection).
J'ai essayé de faire une boucle consistant à aller chercher le nom de la rue (variable NomRue) d'un troncon, puis l'ajouter à la collection mRue (mRue.Add(NomRue)), puis ajouter un IF permettant de dire que si ma variable NomRue = mRue.Item(x), je ne l'ajoute pas, mais nécessairement, ca va refuser de l'ajouter dès la première fois... Je ne sais pas si c'est clair, c'est dur à expliquer
Si quelqu'un connait un moyen de ne pas ajouter plus d'une fois le meme item a une collection...