Bonjour, je viens d'écrire un algorithme en lien avec un exercice sur AlgoBox pour une raison qui m'échappe, l'algorithme ne fonctionne pas. Pourriez-vous m'aider à savoir d'où vient le problème?
bonjour,
Quel était l'exercice ?
que doit faire ton algorithme ?
Il ne fonctionne pas : c'est à dire ? tu as un message d'erreur ?
ou bien tu n'obtiens pas les résultats attendus ?
L'énoncé comment par "On étudie l'algorithme suivant:"
Puis "1.On exécute cet algorithme avec la valeur u=12 en entrée"
Or quand je lance l'algorithme ci-dessus, il ne passe rien. Seul le message:
"***Lancement de l'algorithme***" est visible.
Bonjour,
"On étudie l'algorithme suivant:"
"1. On exécute cet algorithme avec la valeur u=12 saisie en entrée.
a) Quelle est la valeur de p affichée en sortie?
2.Exécuter l'algorithme avec u=14, puis u=100. Indiquer dans chaque cas la valeur de p affichée en sortie.
3.a) Trouver un nombre u saisi en entrée tel que la valeur affichée en sortie soit p=10.
b)De façon plus générale, n est un nombre entier naturel non. Trouver un nombre u saisi en entrée tel que la valeur affichée en sortie soit p=n."
A la question 1, j'ai répondu que p=10. Or ce résultat me parait étonnant par rapport à la question 3. Et je ne comprends absolument pas la question 3.b) car comme p représente le nombre d'itérations exécutées, alors p est toujours égal à un nombre entier naturel non nul?
Merci pour votre aide!
*** message déplacé ***
Bonjour,
multipost interdit
toutes les questions d'un même exercice doivent être dans la même discussion.
je laisse Leile poursuivre cet exo.
Bonjour,
as tu exécuté ton algorithme avec de nombreuses valeurs pour voir comment u et p se comportent ?
alexhdmt,
où en es tu ?
quand u = 12, alors p=10 c'est juste.
mais il y a d'autres valeurs de u qui donnent aussi p=10
par exemple 13, 80, 84, 512
cette dernière valeur u=512 pour p=10 est particulièrement intéressante. Tu vois pourquoi ?
Bonjour, je n'ai pas avancé plus que ça, je pensais qu'une seule valeur donnait p=10 étant donné la formulation de la question. Et non je ne vois ce qu'il y a d'intéressant avec la valeur 512.
justement, la question pouvait te faire penser qu'il y avait plusieurs valeurs qui donnaient p=10.
512 est une grande valeur par rapport à 12 ou 13 ou 80.
Comment se fait-il qu'on ait besoin que de 10 passages dans la boucle ?
C'est parce que à chaque fois qu'on divise par 2, on trouve un nombre pair, donc ça va vite.
décompose 512 en facteurs premiers.
Qu'est ce que tu trouves ?
oui 512 est une puissance de 2
d'autres puissances de 2 :
8 par exemple = 2^3 donne p= 4
4 = 2^2 donne p = 3
et 512 = 2^9 donne p=10....
tu vois le lien ?
alors si on te demande une valeur pour laquelle p=6 par exemple, qu'est ce que tu peux répondre ?
une valeur qui donne p= 4 ? je réponds 2^3
et p=3 ? je réponds 2^2
et p = 10 ? je réponds 2^9
p = 6 tu réponds ?
p=n tu réponds ?
Non malheureusement, je ne comprends pas la question "b)De façon plus générale, n est un nombre entier naturel non. Trouver un nombre u saisi en entrée tel que la valeur affichée en sortie soit p=n."
Puisque la valeur de sortie est toujours un nombre entier naturel non nul, donc pourquoi chercher un "u" précis?
en début d'exercice, on a cherché une valeur u telle que p=10.
l'algo a affiché " nombre de tours p= 10 "
on a trouvé 12, 13, 80, etc... et surtout 512 qui est égal à 2^9
l'algo a affiché " nombre de tours p= 10 "
Ca veut dire que même si tu n'avais pas d'algorithme, ni de calculatrice, quand je te dis "donne moi une valeur u qui marche, pour p=10", tu peux répondre 2^9
si je te dis p=4, tu peux me répondre tout de suite "avec u=2^3, ça marche ".
tu as donc écrit que quelque que soit le nombre de tours n qu'on te donne (10 ou 4, ou autre... ) avec u=2 ^(n-1), ça marche.
On pourrait faire une animation sur un stand de foire :
Quelqu'un dit un nombre n, et si ton algorithme l'affiche, on te donne 5 euros.
Tu gagnes à tous les coups, puisqu'il te suffit de rentrer la valeur u=2^(n-1) pour que l'algo affiche "nombre de tours p = n "
c'est ce que dit la question :
Trouver un nombre u saisi en entrée tel que la valeur affichée en sortie soit p=n."
n : entier naturel ==> oui, tu ne veux pas qu'on te demande un nombre de tours qui ne soit pas entier. Tu ne peux pas afficher p=2,5 tours par exemple.
Tu vois ?
Bonjour Leile,
je suis en train de revoir cet exercice plus en profondeur, mais je suis pris d'un doute concernant la notion de pair ou impair.
Admettons que je choisisse le nombre 52.
A la première boucle on aura: 52/2=26
A la deuxième: 26/3= 26/3
Les nombres décimaux ne sont pas concernés par la notion de pair et d'impair?
en attendant
il n'y a nulle part de division par 3 ...
on divise par 2 si la valeur actuelle (pas la valeur initiale), ici 26, est paire
et sinon on multiplie par 3 et on ajoute 1
comme ceci a lieu pour une valeur impaire, le résultat est alors pair et le coup suivant on divise par 2 ...
en partant de 52 on obtient successivement
26, 13, 3*13+1=40, 20, 10, 5, 3*5+1=16, 8, 4, 2, 1 terminé
Oui je me suis trompé en frappant, mais pour la question "3. b)De façon plus générale, n est un nombre entier naturel non. Trouver un nombre u saisi en entrée tel que la valeur affichée en sortie soit p=n.". Comment suis-je censé savoir que pour u=2^(n-1) ,p=n. Leile m'a donné la réponse mais comment puis-je savoir que l'on cherche u=2^(n-1)?
alexhdmt, je ne t'ai pas donné la réponse, je t'ai donné une piste et c'est toi qui l'a trouvée.
C'est là que je ne comprends pas parce que cela marcherait également avec un nombre qui est une puissance de 4?
alexhdmt,
tu dis 'je ne comprends pas', mais pourtant, tu sais bien que tu peux diviser 2^n par 2, n fois, non ?
Je ne vois pas bien ce que tu ne comprends pas.
pourquoi pas une puissance de 4 ? ton algorithme divise par 2, pas par 4.
si je te dis p=6 par exemple,
il faudra entrer u=5 ou u=32 .... 32 est une puissance de 2, mais aucune puissance de 4 ne conviendra.
Je me suis mal exprimé, je comprends que l'algorithme réalise un nombre restreint au maximum d'itérations si u= toujours un nombre pair. Mais pour autant dans mon esprit, je n'établis pas que par conséquent ce nombre u=2^n. Car je ne me rappelle pas avoir vu que 2^n donne toujours un nombre pair, vous voyez où je en venir?
tu veux pouvoir diviser par 2 à chaque tour.
Donc il te faut un nombre qui s'écrit 2*2*2*2......* 2
et ça, c'est une puissance de 2
et 2^n / 2 = 2^(n-1) qui est encore une puissance de 2.
un exemple
2^5 = 2* 2* 2* 2* 2
tu divises ça par 2, tu obtiens 2^4 = 2*2*2*2 que tu peux encore diviser par 2, et obtenir encore un nombre qui se divise par 2.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :