Optimisation prog !!

rewcrew Messages postés 6 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 28 mars 2005 - 19 oct. 2002 à 14:50
Alan71 Messages postés 530 Date d'inscription lundi 3 juin 2002 Statut Membre Dernière intervention 13 juin 2004 - 19 oct. 2002 à 19:58
salut a tous !!
voila quelque extrait de mon code sources !
en fait ce prog doit servir a tester toute les posibilitée pour trouver les mot qui sont egal a checksum :
en fait mon probleme et que quand je met pour I , J ,K ,M et N = 20 to 23 ! sa marche
mais des que j augmente (le but etant de tester toute la chain ! =20 to 86 !) ça plante !
pouvez vous me dire ce qui va pas ??
je vous laisse lire le code !

-------------------declarations------------------
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim chain, mot As String
Dim i, j, k, l, m, n As Integer
Dim tabcaract(5) As String
Dim p As Single
Dim checksum, sum As Long

Private Sub Command1_Click()
Call creat ' appel fonction de creation mot!
Text2.Text = p ' affiche nombre de mot creer
End Sub ' dans text2 !!

Private Sub Form_Load()
chain = " azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789_$&#@"
checksum = 296506
p = 0
sum = 1
End Sub

Public Function creat() ' fonction de creation des mot
For i = 20 To 25 ' on part de 1 a la longueur total de chain et on increment a chaque tour
For j = 20 To 25 ' on increment j j usqua la longueur totale de chain
For k = 20 To 25 ' on increment k jusque len(chain) !!
For m = 20 To 25 ' idem mais avec m
For n = 20 To 25 ' idem mais n comme variable de boucle!
mot = Mid(chain, i, 1) & Mid(chain, j, 1) & Mid(chain, k, 1) & Mid(chain, m, 1) & Mid(chain, n, 1) ' est on les assemble pour faire le mot
Text1.Text = Text1.Text & vbCrLf & mot ' inscrit chaque mot dans text1 !
p = p + 1 ' comptage du nombre de mot
Call check
Sleep 10
Next n
Next m
Next k
Next j
Next i
End Function

Public Function check() ' test de la fonction check
For l = 0 To 4
caract = Mid(mot, l + 1, 1) ' on prend 1 caractere de mot en partant du 1er caractere tabcaract(l) InStr(chain, caract) ' poscaract a la position du caractaire dans chain ! = integer
'calcul de sum :
sum = sum + ((tabcaract(l) * 3 * l) * (tabcaract(l) * l * l))
If sum = checksum Then
Text4.Text = Text4.Text & sum & vbCrLf
Text3.Text = Text3.Text & mot & vbCrLf
End If
Next l
End Function

------------------------stop-------------------
je comprend pas pourquoi quand je met =20to 23 sa marche et que des que j augment sa plante !!
------------rewcrew---------------

2 réponses

rewcrew Messages postés 6 Date d'inscription mercredi 25 octobre 2000 Statut Membre Dernière intervention 28 mars 2005
19 oct. 2002 à 14:56
pettite precision !!!

chain fait 86 caractere !! et commence par 19 espaces !!
ensuite :
dans la formule pour le calcul de sum il y a une erreur !
en fait ce n est pas sum = sum + ((tabcaract(l) * 3 * l) * (tabcaract(l) * l * l))

mais :
sum = sum + ((tabcaract(l) * 5 * l) * (tabcaract(l) * l * l))
en fait le 5 represente le nombres de lettre de mot !

------------rewcrew---------------
0
Alan71 Messages postés 530 Date d'inscription lundi 3 juin 2002 Statut Membre Dernière intervention 13 juin 2004
19 oct. 2002 à 19:58
86 caractère, ca me parait beaucoup pour un integer... Essaie de passer en Long, ou a pire en String, puis utiliser la fonction val()

>:) ::Alan USSE:: >:)
0
Rejoignez-nous