Bonjour, je vous transmets une question qui m'a été posée par Karirovax sur ma messagerie privée
A vous de jouerEnvoyé par karirovax
Bonjour, je vous transmets une question qui m'a été posée par Karirovax sur ma messagerie privée
A vous de jouerEnvoyé par karirovax
Mille jours d’entraînement pour forger, dix milles jours d’entraînement pour polir.
Shimen Musashi - Gorin-no-sho Rouleau de l’eau
merci à vous aussi de me répondre mais je trouve que cela est pour le cryptage
je suis nul en VB.NET
j'ai un code qui je trouve sur le forum CodeSource pour résoudre une équation du second ordre qui je bricole à l'intérieur pour que je remplace le code original avec mon petit problème ( pour moi c'est presque impossible mais pour vous c'est presque très possible )
Si vous aimez ma réponse, pensez à cliquer sur
Si le problème est résolu, pensez à cliquer sur ( bouton en bas )
cordialement
Je comprend -relativement- ce que tu veux faire exceptéQue veux-tu faire avec la somme des chiffres au juste ?et calcule: s+a+l+u+t = 2+5+12+9+8 = résultat
Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray
ToDo : Faire une ToDo List
merci pour ta part
je déclare des lettre comme chiffre puis en tapant une phrase et le programme calcule la somme des lettres dans cette phrase
Par Ex. je tape: salut tous le monde
le programme calcule: s+a+l+u+t+t+o+u+s+l+e+m+o+n+d+e et donne la somme des lettres qui sont déjà déclarées comme chiffres
je pense que c'est claire maintenant.
merci encore
Cordialement
Si vous aimez ma réponse, pensez à cliquer sur
Si le problème est résolu, pensez à cliquer sur ( bouton en bas )
cordialement
Pas d'autre solution
merci a vous tous, j’attends quand même
Si vous aimez ma réponse, pensez à cliquer sur
Si le problème est résolu, pensez à cliquer sur ( bouton en bas )
cordialement
Oui je vois le principe, mais ma question était "que veux-tu FAIRE avec la somme ?"
Tu as ta chaîne, tu remplaces chaque caractère par un nombre/Chiffre et tu fais la somme, mais à quoi va te servir cette somme ? J'espère que tu n'envisages pas un effet retro pour retrouver ta chaîne à partir de la somme ...
Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray
ToDo : Faire une ToDo List
Bonjour,
Il y a plein de solutions pour ce type de problème.
Une consisterait à utiliser un Dictionnay(of Char,Integer). Tu remplis le Dico avec les couples Caractère-Valeur.
Ensuite, pour chaque caractère de la chaine, tu vas rechercher dans le Dico la valeur de ce caractère et tu additionnes.
eb.
ps : Effectivement, c'est quoi l'intérêt ? C'est un simple exercice ou ça a un but précis ?
Après la somme, je doit faire un carré magique ( mais pas maintenant )
mon problème que je ne trouve pas la méthode qui détecte la 1ère lettre et la stoker on la convertie et même chose pour la 2ème et ainsi de suite
je trouve sur le net qu'il y a la fonction MID() mais je connais rien comment l’intégrer ... je sais qu'il faut un compteur pour chaque lettre ainsi que peut être une fonction Trim() pour supprimer les tabulations mais comme je vous dit en haut ( je suis nul en VB.NET )
merci
Si vous aimez ma réponse, pensez à cliquer sur
Si le problème est résolu, pensez à cliquer sur ( bouton en bas )
cordialement
Je comprend un peu mieux.
Les valeurs numériques associées aux caractères sont a=1 b=2 c=3 ... z=27 ?
Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray
ToDo : Faire une ToDo List
Alors tu peux faire qqch comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Dim tab As New Hashtable 'Une HashTable pour stocker des clé/values (ici a/1, b/2, ...) Dim leMessage As String = "Coucou c'est moi" Dim somme As Integer = 0 Dim i As Integer = 0 For Each caractere As Char In "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 'On parcourt chaque lettre de l'alphabet tab.Add(caractere, i) 'On ajoute à la Hastable la lettre parcouru associé à notre compteur i i += 1 Next leMessage = leMessage.ToUpper 'On met tout en majuscule car sinon le caractère ne sera pas reconnu (a =/= A) For Each car As Char In leMessage 'on parcourt le message If tab.ContainsKey(car) Then 'on teste que le caractère parcouru fasse parti de notre Hashtable (ainsi on ne plantera pas sur des espaces ou caractères spéciaux) somme = somme + tab(car) 'On recupére la valeur numérique associé à notre caractère et on l'ajoute à notre somme End If Next MsgBox(somme)
Ce n'est pas la solution la plus optimisé je pense, alors n'hésitez pas à me corriger.
Ps: Dans notre cas, les caractères spéciaux tel que "é" "à" etc ne sont pas pris en compte.
Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray
ToDo : Faire une ToDo List
merci beaucoup
Juste une petite question SVP
Si je met un tableau avec d'autre caractère comme par exemple
ah=1
ab=2
c1=3
...etc
est ce que cela fonctionne avec le code ou si je fais compter jusqu'au 10 lettre et ensuite 20, 30 ... 100 puis 200, 300, ...1000
c'est à dire
ah = "أ" ' = 1
ab = 1
ba = 2
J = 3
dd = 4
hh = 5
W = 6
Z = 7
h = 8
tt = 9
Y = 10
K = 20
L = 30
M = 40
N = 50
Ss = 60
aa = 70
F = 80
dh = 90
kk = 100
r = 200
sn = 300
t = 400
tth = 500
kh = 600
th = 700
dhh = 800
rh = 900
ch = 1000
c'est ça le vrai tableau que je suis entrain de réaliser ... est ce que ça va marcher avec la même procédure
merci encore pour le partage de vos connaissance
Si vous aimez ma réponse, pensez à cliquer sur
Si le problème est résolu, pensez à cliquer sur ( bouton en bas )
cordialement
bonjour karirovax
C'est dans le sens de ce qu'as dit _Ez3kiel mais en plus pratique oriente pour un affichage sur un form....
- class helper qui stores la liste des caracteres alpha maj (à partir des 128 carcteres ascii ) et constitue la liste ou l'on fait la recherche des caracteres saisis....
- un listbox1 affiche la liste des cars avec leurs numeros....
-un textbox1 pour saisir le mot (maj ou min peu importe)
-un listbox2 affiche les cars du mot saisi dans textbox1 avec leur valeur respectives
-un label1 :affiche le total de la valeur des cars saisis....
code vb du form:
bon code...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 'Controles à dropper sur le form ' ' => TextBox1 :pour saisir le text ' ' => ListBox1: affiche la liste des caracteres alphabetique de A-Z ' ' numerote de 1 à 26 ' => ListBox2: affiche les caracteres saisies par toi avec leur numero ' ' => label1 affiche la somme des caracteres saisis Imports System.ComponentModel Public Class Form2 Private maListe As CollectionCars = New CollectionCars Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TextBox1.Clear() ListBox1.Items.Clear() 'remplit la liste à partir des 128 carateres ascii ' en ecartant tous les non apha Dim tonNumero As Integer = 1 For i As Integer = 0 To 128 Dim c As Char = ChrW(i) If Not Char.IsLetter(c) Then Continue For maListe.AddCar(Char.ToUpper(c), tonNumero) tonNumero += 1 Next 'affiche dans listbox1 ListBox1.DataSource = maListe.List End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged If maListe.List.Count <> 0 Then CalcSomme(TextBox1.Text) End If End Sub Private Sub CalcSomme(ByVal msg As String) 'clear du ListBox2 ListBox2.Items.Clear() Dim sum As Integer = 0 For Each c As Char In msg.ToCharArray() If maListe.FindNumero(Char.ToUpper(c)) = -1 Then Continue For sum += maListe.FindNumero(Char.ToUpper(c)) ' ajoute les cars saisies avec leur numero ListBox2.Items.Add(c & " " & maListe.FindNumero(Char.ToUpper(c)).ToString) Next 'affiche la somme Label1.Text = sum.ToString End Sub End Class ' Class Helper ' store la liste des caracteres alphabetique de A-Z ' numerote de 1 à 26 Public Class CollectionCars Private tab As New Hashtable Private mStrings As List(Of String) = New List(Of String) Public Sub AddCar(ByVal c As Char, ByVal n As Integer) If Not tab.ContainsKey(c) Then tab.Add(c, n) mStrings.Add(c & " -> " & n.ToString) End If End Sub Public Function FindNumero(ByVal c As Char) As Integer If tab.ContainsKey(c) Then Return tab.Item(c) MessageBox.Show(tab.Item(c).ToString) End If Return -1 End Function Public Sub Clear() tab.Clear() End Sub Public ReadOnly Property List() As List(Of String) Get Return mStrings End Get End Property End Class
merci beaucoup mais j'arrive pas à le compiler ??
je vous donne mon code qui jusqu'à maintenant n'est pas près ( merci à _Ez3kiel aussi ):
merci pour vous tous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142 Public Class Equation 'Dim a As String 'Dim b As Double 'Dim c As Double 'Dim d As Double 'Dim S As Double Dim أ = 1 Dim ا = 1 Dim ب = 2 Dim ج = 3 Dim د = 4 Dim ه = 5 Dim و = 6 Dim ز = 7 Dim ح = 8 Dim ط = 9 Dim ي = 10 Dim ك = 20 Dim ل = 30 Dim م = 40 Dim ن = 50 Dim ص = 60 Dim ع = 70 Dim ف = 80 Dim ض = 90 Dim ق = 100 Dim ر = 200 Dim س = 300 Dim ت = 400 Dim ث = 500 Dim خ = 600 Dim ذ = 700 Dim ظ = 800 Dim غ = 900 Dim ش = 1000 Dim Tab1 As String() = {"ا" , "ب", "ج", "د", "ه", "و", "ز", "ح", "ط", "ي", "ك", "ل", "م", "ن", "ص", "ع", "ف", "ض", "ق", "ر", "س", "ت", "ث", "خ", "ذ", "ظ", "غ", "ش"} Dim Tab2 As Integer() = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000} 'Dim leMessage As String = Nbre_a.Text '"Coucou c'est moi" Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim tab As New Hashtable 'Une HashTable pour stocker des clé/values (ici a/1, b/2, ...) Dim leMessage As String = Nbre_a.Text '"Coucou c'est moi" Dim somme As Integer = 0 Dim i As Integer = 0 'For Each caractere As Char In "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 'On parcourt chaque lettre de l'alphabet 'For Each caractere As Char In "أبجدهوزحط" ' tab.Add(caractere, i) 'On ajoute à la Hastable la lettre parcouru associé à notre compteur i ' i += 1 'Next 'For Each caractere As Char In "يكلمنصعف" ' tab.Add(caractere, i) 'On ajoute à la Hastable la lettre parcouru associé à notre compteur i ' i += 10 'Next 'For Each caractere As Char In "ضقرستثخذظغش" 'On parcourt chaque lettre de l'alphabet ' tab.Add(caractere, i) 'On ajoute à la Hastable la lettre parcouru associé à notre compteur i ' i += 100 'Next ''msgbox(Tab1(2)) ''tab.Add(Tab1(0), 0) ''Dim table As new HashTable() ''For i=0 To 28 '' For Each carh As Char In "أبجدهوزحطيكلمنصعفضقرستثخذظغش" '' table.Add(carh, i) '' i +=1 '' Next ''Next 'Dim myHash As Hashtable = CreateHashtable() For Each caractere As Char In "أبجدهوزحطيكلمنصعفضقرستثخذظغش" tab.Add(caractere, Tab2(i)) 'On ajoute à la Hastable la lettre parcouru associé à notre compteur i i += 1 Next 'Search an Item 'If tab.ContainsValue(Tab2(1)) Then ' MsgBox("الحرف ب موجود") 'Else ' MsgBox("الحرف ب غير موجود") 'End If 'leMessage = leMessage.ToUpper 'On met tout en majuscule car sinon le caractère ne sera pas reconnu (a =/= A) leMessage = Replace(leMessage, " ", "") For Each car As Char In leMessage 'on parcourt le message 'For Each k As Integer In Tab1 'on parcourt le message If tab.ContainsKey(car) Then 'on teste que le caractère parcouru fasse parti de notre Hashtable (ainsi on ne plantera pas sur des espaces ou caractères spéciaux) 'If Tab1(k) <> "" Then 'on teste que le caractère parcouru fasse parti de notre Hashtable (ainsi on ne plantera pas sur des espaces ou caractères spéciaux) 'if inStr(leMessage,"ا") Then 'et ca retourne un variant. 'somme = somme + tab(car) ' somme = somme + Val(Tab1(0)) '+ tab(car) On recupére la valeur numérique associé à notre caractère et on l'ajoute à notre somme ' Else somme = somme + tab(car) 'End If End If 'somme = somme + Tab2(car) 'MsgBox(somme) Next 'Dim kad As String = MsgBox(Mid(leMessage,1,Len(leMessage))) 'MsgBox(Tab2(0)) MsgBox(somme) Nbre_c.Text = somme End Sub Private Sub Effacer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Effacer.Click Nbre_a.Text = "" Nbre_b.Text = "" Nbre_c.Text = "" ' Nbre_x.Text = "" ' Nbre_x3.Text = "" End Sub Private Sub Quitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Quitter.Click End End Sub Private Sub Equation_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Visible = False Me.Hide() 'Accueil.ShowDialog() End Sub Private Sub BtnResoudre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnResoudre.Click 'pour le test ... pas encore End Sub Sub equation(ByVal a As Integer, ByVal b As Integer, ByVal c As Integer, ByRef x1 As Single, ByVal x2 As Single) 'pour le test ... pas encore 'For Each caractere As Char In "يكلمنصعف" ' tab.Add(caractere, i) 'On ajoute à la Hastable la lettre parcouru associé à notre compteur i ' i += 10 'Next ''Dim somme As Integer = 0 ''Dim test As Integer ''for Each test In Tab '' somme = somme + Val(test) ''next 'MsgBox(Tab(5)) Nbre_b.Text = MsgBox(Tab2(5)) End Sub End Class
RM:
pour le Form, j'ai un form qui j'ai manipulé moi même grâce à un code sur le forum CodeSource.fr intitulé Équation et le code final grâce à _Ez3kiel
Code final modifier
Si vous aimez ma réponse, pensez à cliquer sur
Si le problème est résolu, pensez à cliquer sur ( bouton en bas )
cordialement
A compiler (quel est le message d'erreur) ou à exécuter ?
Perso j'ai testé il compile bien, il suffit de rajouter l'évènement TextBox1_TextChanged dans le textbox1 pour l'exécuter :
Dans ta form en mode Design,
il faut sélectionner le TextBox1,
dans les propriétés : cliquer sur le bouton évènement (barre de bouton en haut),
pour l'évènement TextChanged : cliquer sur la petite flèche à droite,
et choisir dans la liste déroulante : TextBox1_TextChanged
Traductions d'articles :
La mémoire en .NET - Qu'est-ce qui va où ?
Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.
Merci beaucoup
Désolé, car j'ai mal exprimé mon problème et mes explications ...
Pour la compilation j'utilise un fichier batch qui va directement appeler le compilateur VBC du .net framework ( j'ai pas de visual basic ) :
voici le code batch
donc c'est pour cela que je doit télécharger un projet déjà fait et je bricole à la suite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 @echo off set path=C:\WINDOWS\Microsoft.NET\Framework\v3.5;%path% cls echo Compiling Projects.. vbc "%1" /r:"System.dll" /r:"System.Windows.Forms.dll" MSBuild.exe "%1" echo Si la compilation chou , C'est par ce que le variable d'envirennement echo n'est pas donn pour VBC.exe ( path for vbc.exe ). echo If so, kindly add the .NET Framework SDK path to your path variable. Pause
Cette méthode fonctionne très très bien dans tous les application que je l'ai bricoler ( pas beaucoup de chose mais juste pour comprendre ce qui doit arriver si on touche ou on modifier quelques paramètres )
Pour le code du VB qui j'ai posté en haut, il me reste d'une boucle qui lire la phrase à partir du tableau et convertie la sortie en nombre puis donne la somme des lettre par ces numéros )
RM:
Les caractères que j'utilise se sont en Unicode ( autre langue qui écrit de droite à gauche "arabe")
Pour finir le code de _Ez3kiel fonctionne très bien sauf que le code si j'ai bien compris augmente le compteur en une seul pas c-à-d qu'il commence A=1, B=2, et incrémente par UN mais la mienne doit respecter le pas après le nombre 10 qu'il deviendra 20, 30 ..., jusqu'à 100 puis quand il est à 100 il commence mais par 100 c-à-d 100, 200, ..., jusqu'à 1000 et il s'arrête et me donne le résultat des caractère trouver dans la phrase qui a été dans un textbox .
merci
Cordialement
Si vous aimez ma réponse, pensez à cliquer sur
Si le problème est résolu, pensez à cliquer sur ( bouton en bas )
cordialement
Désolé pour vous tous c'est très gentille de me répondre, je sais que vous perdez beaucoup de temps pour m'éclairer
mais pas de problème je vous laisse tranquillement, vous déjà me faites comprendre beaucoup des choses sur les codes ( commentaires, Partage des codes, remarques, ...etc )
peut êtres que ma code besoin de mes efforts, besoin beaucoup de temps, et besoin des concentrations.
En tout cas je laisse le code, je doit travailler durement pour que je puisse y arriver
désolé aussi pour ma langue ( faute d'écriture, mal compréhension, " je suis pas français" )
Merci à vous tous sans oublié personne
Cordialement
Si vous aimez ma réponse, pensez à cliquer sur
Si le problème est résolu, pensez à cliquer sur ( bouton en bas )
cordialement
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager