Karin.code
Messages postés183Date d'inscriptionvendredi 2 septembre 2016StatutMembreDernière intervention16 janvier 2018
-
11 sept. 2016 à 22:21
Karin.code
Messages postés183Date d'inscriptionvendredi 2 septembre 2016StatutMembreDernière intervention16 janvier 2018
-
12 sept. 2016 à 15:23
Bonjour,
c'est la première fois que je poste un sujet ici et c'est surement pas la dernière fois ( J'ai trouvé beaucoup des sujets intéressant ici)
je demande votre aide pour un problème qui parait simple pour certain (même trop simple) , je précise juste que je suis débutante :
dans le code suivant :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim g() As Integer = {5, 8, 12, 13, 3, 4, 5, 19} For i As Double = 0 To 30 Step 1 For a = 0 To 7 Step 1 If i <> g(a) Then RichTextBox1.Text = RichTextBox1.Text & i & "," End If Next Next End sub
j'ai utilisé :
Dim g() As Integer = {5, 8, 12, 13, 3, 4, 19, 7}
au lieu de :
If i = 5 Or i = 8 or i = 12 Or i = 13 Or i = 3 Or i = 4 Or i = 19 Or i = 7 then
car la liste ne contient pas que
{5, 8, 12, 13, 3, 4, 19, 7}
elle est assez longue
Mais dans la RichTextBox sa s'affiche comme ça :
0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,30,30,30,30,30,30,30,30,
moi ce que je veux et que si la valeur de i existe dans g alors en passe a la valeur suivante, le résultat finale doit être comme ça :
0,1,2,6,9,10,11,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30
je comprend pourquoi ça s'affiche comme ça, mais je n'ai pas une idée comment corriger cette erreur
aidez-moi s'il vous plaît et merci
vb95
Messages postés3472Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention13 avril 2024169 Modifié par vb95 le 12/09/2016 à 00:55
Bonjour
Cadeau pour une débutante
Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
Dim Liste() As Integer = {5, 8, 12, 13, 3, 4, 5, 19} Dim Resultat as String = String.empty For i As Integer = 0 To 30 If Liste.Contains(i) = False Then Resultat= Resultat & i.ToString & "," End If Next Resultat = Resultat.Substring(0,Resultat.Length - 1) RichTextBox1.Text = Resultat
End Sub
- donne un nom significatif à tes variables : g() de ton code est trop vague alors que Liste() l'est beaucoup moins
- on utilise la variable Resultat et non le controle RichTextBox pour les calculs . La RichtTextBox ne sert que pour l'affichage ( il en est de même pour les autres contrôles)
- String.Empty est pour une chaine de caractères vide
- Le type Double est inutile : tu travailles sur des entiers
- Si le pas (Step) de la boucle For est = à 1 inutile de le spécifier : c'est sa valeur par défaut
- Contains : si le Liste ne contient pas i , on ajoute i à la RichTextBox
- La ligne après le Next enlève la dernière virgule
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 11 sept. 2016 à 22:36
Rapidement, je comprend que tu ne veux conserver qu'une seule occurrence de chaque valeur, j'ai bon ?
Si j'ai bon, tu peux prendre une chaine en entrée et utiliser Split pour déparer les valeurs.
Ensuite, tu peux utiliser la fonction Distinct pour ne garder qu'une seule occurrence : MaListe.Distinct
Si tu ne veux que des nombres, voir avec un Where et un TryCast :
(Par contre, je me rappel plus de la syntaxe VB, je n'ai plus que la C# et comme je n'ai pas d'exemple sur mon PC (et Google est trop loin de ma souris))
int lTmp=0;
MaListe=MaListe.Where((pItem)=>integer.TryCast(pItem,out lTmp)).ToArray();
Pour fusionner le tout :
String.Join
Bonne recherche dans l'aide de Visual Studio pour comprendre tout ce que font ces fonctions.
Karin.code
Messages postés183Date d'inscriptionvendredi 2 septembre 2016StatutMembreDernière intervention16 janvier 20182 11 sept. 2016 à 22:47
désolé mais tu m'a mal compris, par exemple
j'ai i de 0 à 2000 et g() as integer {5,8,9,13,19,26,67,131,168,... etc }
si i = 5 ou 8 ou 13 ou 19 ...etc (tout les valeur de g)
cette valeur de i ne sera pas ajouter dans la RichTextBox
en d'autre terme
RichTextBox1.text= "0,1,2,3,4,6,7,10,11,12,14,15,16 ...etc "
pas de 5 ni de 8 ni de 9 etc dans la RichTextBox
désolé si je n'ai pas bien expliquer
Whismeril
Messages postés19025Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention19 avril 2024656 11 sept. 2016 à 22:52
Bonsoir, et bien à la place de Distinct, tu fais Except.
puisque tu as besoin d'entier, ne l'initialise pas en tant que double
Karin.code
Messages postés183Date d'inscriptionvendredi 2 septembre 2016StatutMembreDernière intervention16 janvier 20182
>
Whismeril
Messages postés19025Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention19 avril 2024 11 sept. 2016 à 23:24
Merci pour ta réponse j'ai trouvé dans le site que tu ma donner le code suivant (après la conversion) :
Public Sub Linq52()
Dim numbersA() As Integer = New Integer() {0, 2, 4, 5, 6, 8, 9}
Dim numbersB() As Integer = New Integer() {1, 3, 5, 7, 8}
Dim aOnlyNumbers As IEnumerable(Of Integer) = numbersA.Except(numbersB)
Console.WriteLine(" Les chiffres en premi�re rang�e , mais pas la deuxi�me rang�e:")
For Each n In en
aOnlyNumbers
Next
Console.WriteLine(n)
End Sub si j'ai bien compris il faut comparer entre numbersA et B, il prend les valeurs qui ne sont pas en commun
mais moi j'ai qu'un seul groupe numbersA
esque je doit crée un groupe que contient tout les valeurs de 0 à 5000
12 sept. 2016 à 01:02
je vais prendre tes remarques en considération
merci encore vb95