Bonjour, voici l'énoncé de l'exercice :
Affecter la valeur 1 à N
Choisir un entier U strictement positif
Afficher N
Afficher U
TANT QUE U>1 :
- si ce nombre est pair, le diviser par 2
- si ce nombre est impair, prendre le triple et ajouter 1
Fin du SI
Augmenter N de 1
Afficher N
Afficher U
Fin de TANT QUE
voici l'algorithme que j'ai réalisé sur algobox
mais quand je lance l'algorithme sa ne marche pas ! Aider moi svp je suis en train de peter les plombs
Bonjour, quand tu écris U prend la valeur floor(U), U n'a jamais été défini avant donc ça génère une erreur. Il te manque un Lire U
Sinon, oui c'est ça.
je l'avais écris il n'y a pas longtemps dans un autre topic, voilà ma version (que tu peux copier/coller en mode d'édition "éditeur de texte" si tu veux)
VARIABLES
U EST_DU_TYPE NOMBRE
N EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE U
N PREND_LA_VALEUR 0
TANT_QUE (U != 1) FAIRE
DEBUT_TANT_QUE
SI (round(U/2)==U/2) ALORS
DEBUT_SI
U PREND_LA_VALEUR U/2
FIN_SI
SINON
DEBUT_SINON
U PREND_LA_VALEUR 3*U+1
FIN_SINON
N PREND_LA_VALEUR N+1
FIN_TANT_QUE
AFFICHER N
FIN_ALGORITHME
merci beaucoup, effectivement j'ai fais des erreurs bêtes, je vais tester avec ta version . Bonne journée
j'ai corrigé mon algorithme et j'ai rentré le tien aussi, mais pour les 2 je crois que c'est faux :
Quand je rentre pour U=5 en résultat ça me met 5
quand je rentre 16 ça me met 4
Est ce que c'est juste ? Et j'ai pas compris l'utilité de cet algorithme et à quoi sert N dans tout ça! Aidez moi svp , depuis hier soir que je suis sur ce truc --'
Oui c'est juste. Il se trouve que si U0=5 la suite en question arrive sur 1 au bout de 5 itérations et que si U0=16, elle arrive sur 1 au bout de 4 itérations.
L'hypothèse de Syracuse est que quelque soit le nombre de départ que l'on donne, on finit toujours par arriver sur 1 au bout d'un nombre fini d'itérations. Le but de cet algorithme est de donner au bout de combien d'itérations on arrive effectivement sur 1. C'est ça le N, c'est le nombre d'itérations qu'il faut pour arriver sur 1.
nan mais parce ils me demandent après de vérifier que pour U = 5, on obtient successivement :
N 1 2 3 4 5 6
U 5 16 8 4 2 1
Oui et bien vérifie.
Tu peux même adapter un peu l'algorithme pour qu'il t'affiche directement le tableau :
VARIABLES
U EST_DU_TYPE NOMBRE
N EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE U
N PREND_LA_VALEUR 1
AFFICHER N
AFFICHER " --> "
AFFICHER* U
TANT_QUE (U != 1) FAIRE
DEBUT_TANT_QUE
SI (round(U/2)==U/2) ALORS
DEBUT_SI
U PREND_LA_VALEUR U/2
FIN_SI
SINON
DEBUT_SINON
U PREND_LA_VALEUR 3*U+1
FIN_SINON
N PREND_LA_VALEUR N+1
AFFICHER N
AFFICHER " --> "
AFFICHER* U
FIN_TANT_QUE
FIN_ALGORITHME
***Algorithme lancé***
1 --> 5
2 --> 16
3 --> 8
4 --> 4
5 --> 2
6 --> 1
***Algorithme terminé***
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :