cs_Cracker
Messages postés82Date d'inscriptiondimanche 9 septembre 2001StatutMembreDernière intervention21 août 2006
-
1 janv. 2005 à 19:04
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015
-
20 mai 2005 à 08:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 20 mai 2005 à 08:23
Use the forum, young souga.
Souga -> ce genre de question se pose sur le forum. Sinon, sur l'évenement onChange ou onLostFocus du textBox tu vérifies si la saisie s'écarte de ce que tu attends
souga
Messages postés1Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention19 mai 2005 19 mai 2005 à 23:52
en faite g des question a poser a tout les amateur de visual basic car je ne trouve pa les reponse:
g lu le code de zoneo mais il puorrait etre plu précis et je sais pas comment faire donc avis o amateur
en faite jvoulais ke quand jentre une lettre (ex "a" ou "b") ou le nombre "0" ou meme un nombre negatif ou a virgule ca me di "saisi incorecte"
voila je vous remercie d'avance
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 20 janv. 2005 à 09:04
dagnir -> tu n'as pas bien suivi mon explication :
si tu ajoute 1 et que tu divises par 2 ta suite devient forcement décroissante donc le problème est ininterressant
cs_Dagnir
Messages postés18Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention11 février 2009 19 janv. 2005 à 23:58
Heu j'ai surement rien compris mais si un nombre est impaire il n'y a qu'à lui ajouter 1 pour le rendre paire et donc divisible par 2, il n'y a pas besoin de lui multiplier par 3 avant.
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 11 janv. 2005 à 11:45
Perso, j'ai résolu le problème de capacité en faisant:
Private Sub Lancer_AfterUpdate()
Dim cpt As Integer
Dim a,b as double
a = Me.Nb
b = a
Res = a & " "
cpt = 0
DoCmd.Hourglass True
While a <> 1
cpt = cpt + 1
Select Case (Right(a, 1) Mod 2)
Case Is 1: a (3 * a) + 1: Res = Res & a & " "
Case Is 0: a a / 2: Res = Res & a & " "
End Select
If a > b Then b = a
Wend
DoCmd.Hourglass False
Altitude = b
Durée = cpt
End Sub
En testant uniquement la fin du nombre, on peut aller plus loin. Par exemple, je peux calculer la conjecture de:
123456789123456 => durée = 326
Et ya un blem avec ton zip, pour moi aussi.
bilaloch
Messages postés556Date d'inscriptionlundi 6 octobre 2003StatutMembreDernière intervention31 octobre 20191 2 janv. 2005 à 19:39
Re,
Personnellement, ca fonctionne a merveille chez moi :)
@ ++
BILALoch
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 2 janv. 2005 à 18:03
Ok Ok, je n'avais pas poussé l'analyse assez loin, merci de ces explications.
Par contre, Zoneo, il y a un problème avec ton Zip : La Form1 ne se charge pas correctement. Je ne sais pas si ça le fait à d'autres ?
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 2 janv. 2005 à 14:55
Jack -> la moitié des nombres sont impairs
Si tu multiplies un nombre impaire par trois tu obtiens un nombre impair, si tu ajoutes 1 il devient pair.
Si tu as un nombre pair tu le divise par 2 et tu as une chance sur 2 (en principe) d'obtenir un nombre pair.
Si on fait une analyse de l'algorithme, on se rend compte d'un équilibre statistique entre l'augmentation impaire et la diminution paire qui rend difficile (impossible ?) la démonstration de l'arrivée à 1.
En fait, quelque soit le nombre de départ il apparait qu'on finit par tomber sur une séquence de puissance de 2 qui finissent toujours pas aboutir à 1.
évidemment, toute séquence (vol) qui abouti à 1 est peut-être une sous-séquence d'une autre séquence, qui elle-même aboutirai alors à 1.
Il semble impossible de trouver une séquence qui rebouclerai sur elle-même ou encore plus difficile qui arrive à l'infini (qui est truffé de puissances de deux bien sûr !!!).
Dans le premier cas chaque élément de la séquence pourrait servir de point de départ or aucun élément n'a jamais été trouvé pour servir de point de départ à une telle séquence (à par 1, 2 et 4 bien sûr, mais c'est la définition de l'algo qui veut ça)
Dans le deuxième cas comme je l'explique, l'infini est truffé de puissances de 2 et se séquences qui respectent la conjecture. Il est donc improbable (mais pas impossible sauf démonstration du contraire) de trouver une séquence sans "limite"
cs_zoneo
Messages postés18Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention11 mai 2005 2 janv. 2005 à 14:51
en rép à jack
le principe c une boucle, tu ne fais pas l'opération une seule fois mais autant de fois nécessaire pour arriver à 1
et une fois à 1 ca ne bouge plus car :
1
1*3+1=4
4/2=2
2/2=1
...
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 2 janv. 2005 à 01:07
lol, problème : manque le Form1.frx dans le Zip
Et il y a un truc que je comprends pas :
- Tu prends un nombre quelconque
- Si pair, tu le divise par 2
- Si impair, tu le multiplies par 3 et ajoute 1
J'ai fais l'essai sous Excel, la formule a tendance à partir vers l'infini, je vois pas trop de quoi tu parles avec le chiffre '1' ...
cs_zoneo
Messages postés18Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention11 mai 2005 1 janv. 2005 à 21:04
merci pr le conseil bilaloch, faut aussi éviter les nombre négatifs : il aime pas trop
mais ca se résout ac un pti abs jpense
bilaloch
Messages postés556Date d'inscriptionlundi 6 octobre 2003StatutMembreDernière intervention31 octobre 20191 1 janv. 2005 à 19:41
Tres interresan. Merci pour ce code. A part, ajoute ca avant "On Error GoTo erreur" (evite le zero) :
If x = 0 Then MsgBox "N'entrez pas 0" :Exit Sub
Voila
Meci encore et @ ++
BILALoch
cs_Cracker
Messages postés82Date d'inscriptiondimanche 9 septembre 2001StatutMembreDernière intervention21 août 2006 1 janv. 2005 à 19:04
sympa, j'avais fait la meme chose sur ma calculatrice graphique histoire de m'occuper quelque minutes en cours ;) !!
Sinon, ta source a l'air de bien fonctionner.
Le seul truc qui est dommage, c'est la limite de capacité, mais je vois pas comment regler le probleme car meme avec un long ca ne fonctionne pas :(
20 mai 2005 à 08:23
Souga -> ce genre de question se pose sur le forum. Sinon, sur l'évenement onChange ou onLostFocus du textBox tu vérifies si la saisie s'écarte de ce que tu attends
19 mai 2005 à 23:52
g lu le code de zoneo mais il puorrait etre plu précis et je sais pas comment faire donc avis o amateur
en faite jvoulais ke quand jentre une lettre (ex "a" ou "b") ou le nombre "0" ou meme un nombre negatif ou a virgule ca me di "saisi incorecte"
voila je vous remercie d'avance
20 janv. 2005 à 09:04
si tu ajoute 1 et que tu divises par 2 ta suite devient forcement décroissante donc le problème est ininterressant
19 janv. 2005 à 23:58
11 janv. 2005 à 11:45
Private Sub Lancer_AfterUpdate()
Dim cpt As Integer
Dim a,b as double
a = Me.Nb
b = a
Res = a & " "
cpt = 0
DoCmd.Hourglass True
While a <> 1
cpt = cpt + 1
Select Case (Right(a, 1) Mod 2)
Case Is 1: a (3 * a) + 1: Res = Res & a & " "
Case Is 0: a a / 2: Res = Res & a & " "
End Select
If a > b Then b = a
Wend
DoCmd.Hourglass False
Altitude = b
Durée = cpt
End Sub
En testant uniquement la fin du nombre, on peut aller plus loin. Par exemple, je peux calculer la conjecture de:
123456789123456 => durée = 326
Et ya un blem avec ton zip, pour moi aussi.
2 janv. 2005 à 19:39
Personnellement, ca fonctionne a merveille chez moi :)
@ ++
BILALoch
2 janv. 2005 à 18:03
Par contre, Zoneo, il y a un problème avec ton Zip : La Form1 ne se charge pas correctement. Je ne sais pas si ça le fait à d'autres ?
2 janv. 2005 à 14:55
Si tu multiplies un nombre impaire par trois tu obtiens un nombre impair, si tu ajoutes 1 il devient pair.
Si tu as un nombre pair tu le divise par 2 et tu as une chance sur 2 (en principe) d'obtenir un nombre pair.
Si on fait une analyse de l'algorithme, on se rend compte d'un équilibre statistique entre l'augmentation impaire et la diminution paire qui rend difficile (impossible ?) la démonstration de l'arrivée à 1.
En fait, quelque soit le nombre de départ il apparait qu'on finit par tomber sur une séquence de puissance de 2 qui finissent toujours pas aboutir à 1.
évidemment, toute séquence (vol) qui abouti à 1 est peut-être une sous-séquence d'une autre séquence, qui elle-même aboutirai alors à 1.
Il semble impossible de trouver une séquence qui rebouclerai sur elle-même ou encore plus difficile qui arrive à l'infini (qui est truffé de puissances de deux bien sûr !!!).
Dans le premier cas chaque élément de la séquence pourrait servir de point de départ or aucun élément n'a jamais été trouvé pour servir de point de départ à une telle séquence (à par 1, 2 et 4 bien sûr, mais c'est la définition de l'algo qui veut ça)
Dans le deuxième cas comme je l'explique, l'infini est truffé de puissances de 2 et se séquences qui respectent la conjecture. Il est donc improbable (mais pas impossible sauf démonstration du contraire) de trouver une séquence sans "limite"
2 janv. 2005 à 14:51
le principe c une boucle, tu ne fais pas l'opération une seule fois mais autant de fois nécessaire pour arriver à 1
et une fois à 1 ca ne bouge plus car :
1
1*3+1=4
4/2=2
2/2=1
...
2 janv. 2005 à 01:07
Et il y a un truc que je comprends pas :
- Tu prends un nombre quelconque
- Si pair, tu le divise par 2
- Si impair, tu le multiplies par 3 et ajoute 1
J'ai fais l'essai sous Excel, la formule a tendance à partir vers l'infini, je vois pas trop de quoi tu parles avec le chiffre '1' ...
1 janv. 2005 à 21:04
mais ca se résout ac un pti abs jpense
1 janv. 2005 à 19:41
If x = 0 Then MsgBox "N'entrez pas 0" :Exit Sub
Voila
Meci encore et @ ++
BILALoch
1 janv. 2005 à 19:04
Sinon, ta source a l'air de bien fonctionner.
Le seul truc qui est dommage, c'est la limite de capacité, mais je vois pas comment regler le probleme car meme avec un long ca ne fonctionne pas :(