Algorithme sur la suite de syracuse / AIDE \ |
Auteur |
Message |
reima17
Autorisation : Membre
Nb de messages : 4
Inscrit le : Mar 20 Mar 2012, 20:47
|
Posté le : Mar 20 Mar 2012, 20:52
|
|
|
Bonsoir!
Voilà je dois faire un algorithme qui donne le temps de vol d'une suite de syracuse d'un entier naturel E. Est-ce que quelqu'un pourrait m'aider svp?..
Merci!!
(J'ai regardé partout sur le forum avant de demander mais je n'ai pas trouvé. Dsl je suis nouvelle et il se peut qu'il y ait déjà un sujet sur le temps de vol)
|
|
|
|
sandro
Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
|
Posté le : Mar 20 Mar 2012, 20:55
|
|
|
si tu expliquait ce que c'est, je pourrais propablement t'aider, mais sans ces infos, je vois pas comment je pourrais faire.
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes |
|
|
|
reima17
Autorisation : Membre
Nb de messages : 4
Inscrit le : Mar 20 Mar 2012, 20:47
|
Posté le : Mar 20 Mar 2012, 21:02
|
|
|
Ok alors la suite de syracuse:
On a un nombre entier E
S'il est pair, on le divise par deux.
S'il est impair, on le triple et on ajoute 1.
Ex: suite commençant par 3:
Uzéro = 3 ; U(un) = 10 ; U(deux) = 5 ; U(trois) = 16, etc.
il y a une conjecture qui dit que n'importe quel nombre entier strictement positif va atteindre 1.
on appelle temps de vol de la suite de Syracuse d'un entier E le plus petit indice n tel que U(indice)n = 1
par exemple, le temps de vol de la suite de syracuse de 3 est 7.
|
|
|
|
sandro
Autorisation : Membre
Nb de messages : 1387
Inscrit le : Ven 25 Mar 2011, 22:58
|
Posté le : Mar 20 Mar 2012, 21:13
|
|
|
Code | prompt E //on entre l'entier en question
0 -> N //la durée de vol éffectuée est nulle
While E [différent de] 1 //tant que E ne vaut pas 1
If E/2=ent(E/2) //si E est paire
Then //allors
E/2 -> E //on divise par 2
Else //sinon
3E+1 -> E //on triple puis on ajoute 1
End //fin du si
1+N -> N //on augmente de 1 la durée de vol déjà effectuée
End //fin du tant que
Disp N //on affiche la durée du vol |
ça devrait fonctionner.
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes |
|
|
|
reima17
Autorisation : Membre
Nb de messages : 4
Inscrit le : Mar 20 Mar 2012, 20:47
|
Posté le : Mar 20 Mar 2012, 21:21
|
|
|
Wow ça marche à merveille...merci beaucoup !!!!
|
|
|
|
reima17
Autorisation : Membre
Nb de messages : 4
Inscrit le : Mar 20 Mar 2012, 20:47
|
Posté le : Mar 20 Mar 2012, 21:29
|
|
|
Et, désolée de vous déranger encore, mais est-ce que ce serait possible d'en faire un autre qui donne sous forme de liste les premiers termes de la suite jusqu'à ce qu'il atteigne 1 pour la première fois ?
|
|
|
|
Google_AdSense
|
Publicité
|
|
|
|
|
linkakro
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Mar 20 Mar 2012, 22:17
|
|
|
Ecris le même code en ajoutant "Disp E" juste avant le dernier End afin d'afficher les résultats.
Si tu tiens absoluement à stocker la suite dans une liste :
Code | Prompt E
{E -> L1 //stock
0 -> N
While E-1
If partDéc(E/2 // E impair
Then
3E+1 -> E
Else
E/2 -> E
End
1+N -> N
E -> L1(N+1 //stock
End
Disp N
Pause L1 |
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
|
|
|
Mary
Invité
|
Posté le : Jeu 25 Fév 2016, 19:01
|
|
|
Bonsoir,
Est-ce que quelqu'un pourrait m'aider sur une programmation sur ti 83 j'essaye de trouver un programme mais il ne fonctionne pas. L'exercice est :
Entrée saisir N .
Traitement des données : c prend la valeur 0, tant que N différent de 1, C prend la valeur c+1, si N est un nombre pair, alors N prend la valeur N/2, afficher N, sinon N prend la valeur 3N+1,afficher N.
Sortie : afficher C.
Mon programme
Promt N
0 sto C
While N différent 1
End
C+1 sto C
If partdec (E/2)
Then
N/2 sto N
Disp N
Else
3N+1 sto N
Disp N
End
Disp C
Voila mon programme mais il ne fonctionne pas!! Est-ce qu'il y aurait quelqu'un qui pourrait m'expliquer où est mon erreur. Merci
|
|
|
|
Mingerton
Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
|
Posté le : Sam 27 Fév 2016, 2:00
|
|
|
Bonsoir,
Déjà, ton message n'a rien à faire dans ce sujet, tu aurais du en créer un nouveau.
Ensuite, ton End doit venir non pas juste après la condition de boucle (ce qui en fait une boucle vide), mais après les lignes qui sont répétées en boucle. Sur un algo c'est en général précisé par un FinTantQue ou des différences de tabulation. Dans ton cas, tel que je le lis je mettrais le End avec le deuxième End.
---------------------- Mes articles
Mes programmes en ligne (je termine peu de projets)
Guide traduction Algo-Basic, par Linkakro
Catalogue des fonctions 82/83/84 FR/EN |
|
|
|