1

voilà, je cherche le programme de la suite de Syracuse.
Cette suite est ainsi définie, par récurrence :
u0 est un entier naturel non nul,

et u(n+1) = u(n)/2 si u(n) est pair
ou 3u(n) + 1 si u(n) est impair

Merci d'avance

2

Bon alors, j'ai finalement réussi à faire ma programmation, et ça me donne ça :
Input "V",V

Lbl 0
If V/2-int(V/2)=0
Then
V/2->V
Disp V
Goto 0
Else
3*V+1->V
Disp V
Goto 0

Apparement, ça fonctionne ! Mais j'aimerai savoir qu'est ce que je dois ajouter pour que lorsque V=1 la boucle s'arrête.
Si quelqu'un à une idée?

3

hum, faire des boucles avec des label, çay mal.

le plus propre est de faire un while( V != 1) [ qui, si la conjecture de Collatz est vrai [comme c'est apperemment très probable], sera faux au moins une fois, donc si la conjecture est vérifiée, la boucle s'arréte bien, sinon, tu deviens médail fields cheeky.)

Ensuite, tu met tout dans le while.
Bon, vite-fait, ça donne:

Prompt V
While(V != 1)
If fpart(V/2)=0
Then
V/2->V
Else
3V+1->V
End
Disp V
End

[ bon, c'est complétement optimisable, mais je voulais juste te montrer le programme simple mais propre.]
A oui aussi, c'est mal de foutre des goto à l'intérieur de blocs de If en génréral. [de toute façon, retiens qu'il faut utiliser le moins possible de label )

Par contre, c'est assez lourd d'afficher à chaque étape du vol l'altitude, c'est [ plus que les calculs] ce qui ralentira le plus ta calculette.
Un autre solution peut être d'enregistrer dans une liste et de l'afficher une foie finie.
Après, si t'a envi, tu peux rajouter des compteurs, pouir conaitre la durée du vol,la durée du vol "au dessus" (pasque une foi que tu repasse en desous du nombre initial, ça marche forcément), etc...

A, aussi, il faut poster dans Programmation basic, pas débutants. [ programmation contient "débutant en programmation", évidemment] Après ta prochaine répons,e je déplacerais le topic las-bas.
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

4

hmm.. J'ai essayé mais ça ne marchait pas :/
Le problème c'est que mon prof nous a appris qu'avec les Label donc bon...j'aimerai rester sur mon idée.
Enfin, j'aimerai juste garder le programme que j'ai fais et ajouter la suite pour que lorsque V=1 le programme s'arrête.

5

( bha t'ajoute un if =1.. !. Et non, comme tu a fais, c'est très mal pour la mémoir de ta calculatrice).
ha, peut-être n'a tu pas saisi que '!=' était en fait le signe différent ?

Pour en avoir le coeur net, je viens de tester, ça marche parfaitement.
Exactement, ça donne:

Prompt V
While V <singe_différent_de> 1
If fpart(V/2)=0
then
V/2->V
Else
3V+1->V
End
Disp V
End

Si tu veux un peu plus te rapprocher (proprement!) de ton rpogramme initial, c'est pareil que ça:


Input "V",V
While V <singe_différent_de> 1
If V/2=int(V/2)
then
V/2->V
Else
3V+1->V
End
Disp V
End

Et ça marche parfaitement.
Sinon,
on prof nous a appris qu'avec les Label

Et si il se jete dans le canal, tu fait pareil ? (d'ailleurs, il ferait mieux de ne rien apprendre que ça roll )
j'aimerai rester sur mon idée.

Ha, en plus tu sais que tu va dans le canal mais tu veux y aller quand même ? cheeky.
( plus sérieusement, si on conseil qqch, c'est pour une raison. )


«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

6

Non, effectivement je n'avais pas saisi que != était égal au =barré.
Et normalement, je suis censée réutiliser ce que le prof nous enseigne.. enfin bon.
Merci

7

( pour le !=, c'est une habitude de prog sur PC, donc j'oubli régulièrement de l'indiquer lorsque je palre de basic..)
Sinon, tant que tu a compris comment le programme marche, c'est bon wink. [ Il te suffit de comprendre que

while condition
instructions
...
end

= tant que la condition est vraie, éxécuter les instructions.
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.