Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

suite de syracuse dm

Posté par
Lmnop
25-11-17 à 09:24

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 ?

Posté par
Lmnop
re : suite de syracuse dm 25-11-17 à 09:28

excusez moi j'ai oublié de vous envoyer ce que j 'avais fait, voilà :

suite de syracuse dm

Posté par
carpediem
re : suite de syracuse dm 25-11-17 à 11:29

salut

la condition de l'instruction TANT QUE est fausse ...

Posté par
mathafou Moderateur
re : suite de syracuse dm 25-11-17 à 11:35

Bonjour,

on peut aussi ce demander à quoi sert une variable dans laquelle on ne met aucune valeur ...

Posté par
fm_31
re : suite de syracuse dm 25-11-17 à 11:43

Bonjour ,

exemple de programme

suite de syracuse dm

suite de syracuse dm

Posté par
Lmnop
re : suite de syracuse dm 25-11-17 à 13:41

carpediem @ 25-11-2017 à 11:29

salut

la condition de l'instruction TANT QUE est fausse ...


du coup faut pas que je la mette ou que c'est parce que j'ai fait une faute dedans ?

car sinon je pensais mettre la boucle pour

Posté par
Lmnop
re : suite de syracuse dm 25-11-17 à 13:43

mathafou @ 25-11-2017 à 11:35

Bonjour,

on peut aussi ce demander à quoi sert une variable dans laquelle on ne met aucune valeur ...


oui mais je sais pas mettre quelle valeur dans u

Posté par
Lmnop
re : suite de syracuse dm 25-11-17 à 13:45

fm_31 @ 25-11-2017 à 11:43

Bonjour ,

exemple de programme

suite de syracuse dm

suite de syracuse dm


dans votre exemple je ne comprend pas pourquoi vous mettez nb-1

Posté par
mathafou Moderateur
re : suite de syracuse dm 25-11-17 à 13:58

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)

Citation :
oui mais je sais pas mettre quelle valeur dans u

u est une entrée (LIRE u) la valeur de u est déterminée à l'exécution par la valeur qu'on tape à ce moment au clavier
et ensuite u évolue comme tu as fait

je te parlais de la variable a
dans laquelle tu n'as jamais rien mis
et donc le "tant que" sera totalement incapable de savoir si oui ou non il faudrait continuer ou pas

(et si tu ne vois pas quoi faire de la variable a c'est qu'elle ne sert à rien : la supprimer)

Posté par
Lmnop
re : suite de syracuse dm 25-11-17 à 15:21

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 ?

Posté par
mathafou Moderateur
re : suite de syracuse dm 25-11-17 à 15:36

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.

Posté par
fm_31
re : suite de syracuse dm 25-11-17 à 17:28

Citation :
pourquoi vous mettez nb-1

Dans mon programme , il y a une partie affichage de la forme de la suite . Et c'est dans la parti affichage que j'affiche nb-1 étoiles avant d'afficher la valeur intermédiaire de la suite .
Citation :
laisse cet exemple compliqué
Il n'y a rien de bien compliqué dans cet exemple qui comme demandé dans l'énoncé affiche les termes successifs de la suite  et la durée du vol  que j'ai interprété par le nombre d'étapes

Posté par
mathafou Moderateur
re : suite de syracuse dm 25-11-17 à 17:51

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")

Posté par
Lmnop
re : suite de syracuse dm 25-11-17 à 19:32

mathafou @ 25-11-2017 à 15:36

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.



non je me suis trompée excusez moi je voulais mettre u!=1 pas de 0 à la place

Posté par
mathafou Moderateur
re : suite de syracuse dm 25-11-17 à 19:43

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é.

Posté par
Lmnop
re : suite de syracuse dm 25-11-17 à 20:49

ca ne marche toujours pas avec cet algorithme

suite de syracuse dm

Posté par
mathafou Moderateur
re : suite de syracuse dm 25-11-17 à 20:57

oui, la multiplication implicite 3u n'existe pas

toutes les opérations doivent être explicitement écrites : 3*u+1

Posté par
Lmnop
re : suite de syracuse dm 26-11-17 à 09:08

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 ?

Posté par
mathafou Moderateur
re : suite de syracuse dm 26-11-17 à 09:21

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

Posté par
mathafou Moderateur
re : suite de syracuse dm 26-11-17 à 09:25

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 ...)

Posté par
Lmnop
re : suite de syracuse dm 26-11-17 à 10:59

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 ?

Posté par
fm_31
re : suite de syracuse dm 26-11-17 à 11:52

Citation :
donc je rajoute une variable par exemple k


pour faciliter la lecture des algorithmes , il est recommandé de donner des noms de variables le plus représentatifs possibles de l'information que représente la variable .
Ici on veut représenter  la durée de vol  c'est à dire le nombre de termes de la suite que j'ai appelé le nombre de pas . Alors pourquoi ne pas choisir comme identificateur de la variable  nb_t  (nombre de termes)   ou  nb_p (nombre de pas) ou dv (durée de vol)   plutôt que k . Mieux :   duree_vol  par exemple .

Regarde comment j'ai utilisé (déclaration , initialisation , évolution) la variable que j'ai appelé   nb_pas

déclaration (ligne 4) :    nb_pas  EST_DU_TYPE NOMBRE
initialisation (ligne 10) :  nb_pas  PREND_LA_VALEUR 1      (j'aurais pu mettre 0)
évolution (ligne 31) :    nb_pas PREND_LA_VALEUR  nb_pas + 1

Posté par
Lmnop
re : suite de syracuse dm 26-11-17 à 19:57

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 ?

Posté par
fm_31
re : suite de syracuse dm 26-11-17 à 20:18

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

Posté par
Lmnop
re : suite de syracuse dm 26-11-17 à 20:29

donc il faudrait que je mette à 1 moi aussi ?

Posté par
fm_31
re : suite de syracuse dm 26-11-17 à 20:39

Si tu souhaites compter le nombre choisi comme un pas , alors oui .

Posté par
mathafou Moderateur
re : suite de syracuse dm 26-11-17 à 20:54

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)

Posté par
Lmnop
re : suite de syracuse dm 29-11-17 à 19:20

desole j'ai eu un problème de connexion internet chez moi

j'ai fait cela pour la question 3 du coup

suite de syracuse dm

Posté par
mathafou Moderateur
re : suite de syracuse dm 29-11-17 à 23:17

ne marche pas :
la condition du si est fausse (erreur de frappe ? vu ce qu'il est écrit sur les touches d'un clavier standard, c'est plausible)

de plus il n'a pas été demandé de ne plus afficher les termes eux mêmes
mais d'afficher aussi le temps de vol (d'afficher en plus le temps de vol)



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !