mongol77
Messages postés75Date d'inscriptiondimanche 2 octobre 2005StatutMembreDernière intervention24 juin 2007
-
6 avril 2006 à 21:53
cs_Malkuth
Messages postés268Date d'inscriptionsamedi 22 février 2003StatutMembreDernière intervention24 avril 2013
-
21 nov. 2006 à 14:35
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Malkuth
Messages postés268Date d'inscriptionsamedi 22 février 2003StatutMembreDernière intervention24 avril 20134 21 nov. 2006 à 14:35
oups...
mais comme je l'explique il ya d'autre méthodes:
Dim LastJ As long
For i = p To n Step 1
LastJ = Round((i - 1) / 2) + 2
For j = 2 To LastJ Step 1
If i Mod j = 0 Then Exit For
Next j
If j = LastJ then Print #1, i
Next i
Ensuite il est important sur ce type d'algo de gagner du temps
et la premiére des chose a faire c'est de déclarer le type des variables.
dans le cas contraire c'est variant qui est utilisé et ça veut dire une grosse chute de performance.
(ca a déjà été dit mais aucune correction n'as été aporter).
pour déclarer toutes tes variables en long :
Dim i As Long, n As Long, p As Long, j As Long
NHenry
Messages postés15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024159 21 nov. 2006 à 13:06
Bonjour,
Malkuth, selon le code (Dim j,i,... as long, je suppose que c'est du VB6, donc pas de continue.
cs_Malkuth
Messages postés268Date d'inscriptionsamedi 22 février 2003StatutMembreDernière intervention24 avril 20134 17 nov. 2006 à 21:28
pour info pour zapper la fin d'un FOR ... NEXT sans quitter la boucle on doit utiliser CONTINUE (qui continue la boucle...)
GOTO Fais vraiment sale dans un code et est moins facile pour relire le code.
Quand vous pensez que vous pouver pas faire autrement dite vous que des projet de plusieurs dizaines de miliers de ligne de code sont écrit sans faire appel a goto, que dans la plupart des cas le langage à des mécaniques pour faire sans, et dans le dernier recours un petit if devrait faire l'affaire.
cs_Axar
Messages postés19Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention12 juillet 2012 4 juil. 2006 à 16:04
salut ,juste une petite question combien de temps mets tu as trouvé les nombre de 1 à 1 000 000.
mouad001
Messages postés21Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 5 août 2014 19 avril 2006 à 17:12
j'ai trouver une solution et je vais la montée dans le site au plutot le dimanche je vouq remercie pour vos commentaire
je vous aime tous !!!!
NHenry
Messages postés15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024159 10 avril 2006 à 09:03
Pour la clareté du code préfere utiliser une variable de type boolean aulieu d'utiliser un Goto.
Je rajoute :
For j = 2 To Round((i - 1) / 2) + 1 Step 1
Teste même 4, 6, 8 alors que 2 a déjà tété testé.
mouad001
Messages postés21Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 5 août 2014 9 avril 2006 à 09:05
merci pour la correction
exit for ne marchera pas car je veux pas que le nombre soit ecrit dans e fichier si je quitte la boucle
NHenry
Messages postés15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024159 7 avril 2006 à 10:06
Correction :
# Open "c:\premier.txt" For Output As #1
# Close #1
# Open "c:\premier.txt" For Append As #1
tu peux virer
# Open "c:\premier.txt" For Output As #1
# Close #1
Il fallait lire
# Open "c:\premier.txt" For Output As #1
# Close #1
# Open "c:\premier.txt" For Append As #1
tu peux virer
# Close #1
# Open "c:\premier.txt" For Append As #1
NHenry
Messages postés15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024159 7 avril 2006 à 10:05
# Open "c:\premier.txt" For Output As #1
# Close #1
# Open "c:\premier.txt" For Append As #1
tu peux virer
# Open "c:\premier.txt" For Output As #1
# Close #1
Met des noms plus explicite : n et p c'est quoi?
# Dim i, n, p, j As Long
Seul j est long le reste est Variant
# If i Mod j = 0 Then
# GoTo 1
# End If
# Next j
# Print #1, i
# 1: Next i
GOTO !!!!!!!!!!
Utilise Exit For
mongol77
Messages postés75Date d'inscriptiondimanche 2 octobre 2005StatutMembreDernière intervention24 juin 2007 6 avril 2006 à 21:53
21 nov. 2006 à 14:35
mais comme je l'explique il ya d'autre méthodes:
Dim LastJ As long
For i = p To n Step 1
LastJ = Round((i - 1) / 2) + 2
For j = 2 To LastJ Step 1
If i Mod j = 0 Then Exit For
Next j
If j = LastJ then Print #1, i
Next i
Ensuite il est important sur ce type d'algo de gagner du temps
et la premiére des chose a faire c'est de déclarer le type des variables.
dans le cas contraire c'est variant qui est utilisé et ça veut dire une grosse chute de performance.
(ca a déjà été dit mais aucune correction n'as été aporter).
pour déclarer toutes tes variables en long :
Dim i As Long, n As Long, p As Long, j As Long
21 nov. 2006 à 13:06
Malkuth, selon le code (Dim j,i,... as long, je suppose que c'est du VB6, donc pas de continue.
17 nov. 2006 à 21:28
GOTO Fais vraiment sale dans un code et est moins facile pour relire le code.
Quand vous pensez que vous pouver pas faire autrement dite vous que des projet de plusieurs dizaines de miliers de ligne de code sont écrit sans faire appel a goto, que dans la plupart des cas le langage à des mécaniques pour faire sans, et dans le dernier recours un petit if devrait faire l'affaire.
4 juil. 2006 à 16:04
19 avril 2006 à 17:12
je vous aime tous !!!!
10 avril 2006 à 09:03
Je rajoute :
For j = 2 To Round((i - 1) / 2) + 1 Step 1
Teste même 4, 6, 8 alors que 2 a déjà tété testé.
9 avril 2006 à 09:05
exit for ne marchera pas car je veux pas que le nombre soit ecrit dans e fichier si je quitte la boucle
7 avril 2006 à 10:06
# Open "c:\premier.txt" For Output As #1
# Close #1
# Open "c:\premier.txt" For Append As #1
tu peux virer
# Open "c:\premier.txt" For Output As #1
# Close #1
Il fallait lire
# Open "c:\premier.txt" For Output As #1
# Close #1
# Open "c:\premier.txt" For Append As #1
tu peux virer
# Close #1
# Open "c:\premier.txt" For Append As #1
7 avril 2006 à 10:05
# Close #1
# Open "c:\premier.txt" For Append As #1
tu peux virer
# Open "c:\premier.txt" For Output As #1
# Close #1
Met des noms plus explicite : n et p c'est quoi?
# Dim i, n, p, j As Long
Seul j est long le reste est Variant
# If i Mod j = 0 Then
# GoTo 1
# End If
# Next j
# Print #1, i
# 1: Next i
GOTO !!!!!!!!!!
Utilise Exit For
6 avril 2006 à 21:53