Aidez moi a finir mon code .net

Résolu/Fermé
karirovax Messages postés 3221 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 22 juin 2016 - 29 juin 2013 à 23:05
karirovax Messages postés 3221 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 22 juin 2016 - 30 juin 2013 à 04:19
salut tous le monde

J'ai déjà posé le même problème ici mais personne ne me propose de quoi faire ... mais peut être que c'est moi qui n'explique pas correctement le problème, pour finir, je vous donne le code juste apès :).

le problème ce que la boucle fonctionne pour tout les caractères sauf pour le 1er qui est dans le tableau Tab1() ou même Tab2():

Le code:

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 caractère 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


merci pour vous tous
A voir également:

2 réponses

karirovax Messages postés 3221 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 22 juin 2016 203
29 juin 2013 à 23:30
Re:

J'ajoute: Les caractères qui en en point réinterrogation "?" se sont des caractères unicode et ça ne me pose pas des problèmes.
même si j'ajoute le 1er caractère dans le Hashtable ceci me dit qu'il est déjà présent ... j'ai pas compris ou j'ai peut être trompé ...

mon code permet de chiffrer la phrase donnée puis donne la somme des numéros comme indiqué dans le 2ème tableau Tab2

Est ce possible de rendre ce code comprend que le 1er caractère à le numéro "1".

car il donne la somme sauf que si la phrase contient le 1er caractère, la somme ne le compte pas ou lui donne un zéro et j'aime bien qu'il lui donne un "1" et pas un "0".

De l'aide S.V.P
0
karirovax Messages postés 3221 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 22 juin 2016 203
30 juin 2013 à 04:19
Re:

je réécris le code:

Public Class Equation
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
''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, " ", "")
Dim NbOc As Long
Dim RC As integer = 1
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
'Function NbOc(leMessage As String, Ch As String, Optional RC As integer = 1) As Long
NbOc = (Len(leMessage) - Len(Replace(leMessage, Tab1(0), "", , , RC))) / Len(Tab1(0))
'NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , RC))) / Len(Ch)
'End Function
'ou:
'leMessage=Ta chaine principale
'Ch=Ta sous chaine (ou caractère)
'RC=Pour Respecter ou non la Casse dans la fonction Replace prédéfinie en visual basic
'si RC=1 alors majuscule = minuscule
'si RC=0 alors majuscule /= minuscule

'End If
End If
somme = somme + tab(car)'+NbOc
'somme = somme + Tab2(car)
'MsgBox(somme)
Next
'Dim kad As String = MsgBox(Mid(leMessage,1,Len(leMessage)))
Dim Ch As String = msgbox("ظهر الحرف ا :" & NbOc & " مرة")
somme = somme +NbOc
'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 = ""
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
'Nbre_b.Text = Tab2(5)
Dim leMessage As String = Nbre_a.Text
Dim tkr As Integer = NbOc(leMessage,"ا")
Nbre_b.Text = "ظهر حرف الألف: " & tkr & " مرة"
End Sub
Private Function NbOc(leMessage As String, Ch As String, Optional RC As integer = 1) As Long
Ch = Tab1(0)
NbOc = (Len(leMessage) - Len(Replace(leMessage, Ch, "", , , RC))) / Len(Ch)
msgbox("ظهر الحرف ا :" & NbOc & " مرة")
'NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , RC))) / Len(Ch)
End Function
End Class
0