Bonjour , excusez moi de vous déranger j'ai un dm à faire et je bloque sur trois questions à propos d'algorithme .
Voici l'énoncé :
La suite de Syracuse (Un) est définie sur N par U0 N et pour tout nombre entier naturel n , on :
Un+1 = Un / 2 si Un est pair
ou
Un+1= 3Un+1 si Un est impair
La conjecture de Collatz est l'hypothèse mathématiques selon laquelle quelque soit le nombre U0 entier naturel la suite de Syracuse atteint la valeur 1 .
Voici les questions sur lesquelles je bloque :
2) a) Ecrire un programme qui demande la valeur U0 et affiche les termes successifs de la suite jusqu'à arriver à 1 .
b) Le programmer sur Algobox et tester la conjecture pour U0=21 et U0=60
3) Modifier le programme pour qu'il affiche aussi "la durée du vol" c'est à dire le nombre de termes de la suite obtenue jusqu'au premier terme égal à , si on obtient 1.
Pour l'instant , je n'ai fait que ca pour la question 2 mais quand je le teste il me marque qu'il y a une erreur .
Pourriez-vous m'aider s'il vous plait ?
Bonjour,
on peut aussi ce demander à quoi sert une variable dans laquelle on ne met aucune valeur ...
laisse cet exemple compliqué qui a pour but de sortir sous forme graphique avec des "*"
et occupe toi donc du tien.
il y a une ligne à corriger : le "tant que" (dit par carpediem)
ouais je pense qu'elle ne sert à rien la variable a et du coup sur la ligne tant que si je mettais u!==0 à la place du a est ce que vous penserez que ca marcherait ?
tu n'auras jamais u = 0
donc ta boucle ne s'arrêtera jamais
pourquoi changes tu à la fois la variable testée et le test qui est fait dessus ???
nota : en Algobox "différent" se dit !=
pas !== qui risque fort de vouloir dire tout autre chose, si pas de message d'erreur de syntaxe.
on en est à la question 2a, pas à la question 3 ...
de plus la boucle supplémentaire pour afficher les étoiles n'est pas demandée
(c'est cela dont je voulais parler en "compliqué", même si c'est simple pour un habitué de la programmation, ce ne sera pas le cas pour pour un néophyte qui a déja du mal à écrire une boucle simple "tant que")
OK, là ça doit marcher.
la 2b n'offre aucune difficulté une fois que le programme marche.
pour la 3 tu peux t'inspirer (maintenant !) du programme de fm_31
en ignorant l'histoire de l'affichage des étoiles (la boucle
pour i de 1 à nb-1
...
fin pour
qui n'est pas demandée dans ton énoncé.
oui, la multiplication implicite 3u n'existe pas
toutes les opérations doivent être explicitement écrites : 3*u+1
C'est bon pour la question 2 a et 2 b du coup maintenant c'est la question 3 qui me pose problème , je pense qu'il faut que j'insère une boucle pour est ce bon ?
non.
aucune boucle à ajouter, mais des test et des variables
regarde le programme de fm_31
sa boucle "pour" en plus ne sert QUE à afficher des étoiles
elle n'est pas demandée ici
par contre regarde attentivement tout le reste ...
ton u s'appelle nb chez lui
nb_pas est le nombre de boucles (tantque) effectuées, c'est à dire la durée "de vol"
hauteur est bien sur la hauteur maxi atteinte
i ne sert à rien pour toi puisqu'il ne servait que pour la boucle à afficher les étoiles
en fait en relisant l'énoncé c'est même encore plus simple :
on ne te demande que de compter le nombre de boucles effectués (la gestion du nb_pas dans le programme de fm_31)
donc ajouter juste une variable
deux instructions pour la gérer
et une pour l'afficher à la fin.
c'est tout.
(qud je disais que le programme de fm_31 dépassait largement ce qui est demandé dans cet exo ...)
donc je rajoute une variable par exemple k
est ce que je dois la lire ou pas ?
mais du coup je vois pas comment la gérer ?
ah je comprend mieux du coup ca donnera la durée de vol , mais pourquoi avoir mis 1 à la place de 0 ?
et juste une petite question tu la mets dans la boucle tant que ou pas l'évolution ?
J'ai initialisé nb_pas à 1 pour compter le nombre de départ choisi .
La ligne 31 (évolution de nb_pas) est bien dans la boucle bien sûr
si on initialise nb_pas à 1, on compte le nombre de termes (y compris le premier donc)
si on l'initialise à 0 on compte le nombre de termes calculés (le nombre de pas de calcul)
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :