Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

Suite de Syracuse sur Algobox, Temps de vol en altitude.

Posté par
Angel71
11-12-13 à 15:26

Bonjour,
J'ai reçu un exercice de maths à faire sur le logiciel algobox sur la suite de Syracuse. On me demande de tester la suite de Syracuse avec Algobox (pas de problème de ce côté la). On me demande également le temps de vol (pas de souci non plus)mais on me demande le temps de vol en altitude ce qui correspond au nombre de valeurs supérieures au premier nombre de la suite. Je n'arrive pas à trouver cette valeur avec l'algorithme et je ne sais pas comment faire pour l'obtenir.Je ne sais pas quel "code" rentrer ni quels instructions donner pour trouver cette valeur.
Merci d'avance pour votre aide.

Posté par
ArgShX
re : Suite de Syracuse sur Algobox, Temps de vol en altitude. 11-12-13 à 15:35

Bonjour,

Est-ce que tu peux nous montrer le code que tu as utilisé pour calculer le temps de vol ? Normalement pour le temps de vol en altitude il y a juste besoin de faire une petite modification de ce code.

Posté par
Angel71
Suite de Syracuse sur Algobox, Temps de vol en altitude. 11-12-13 à 15:41

J'ai rentré le code "C prend la valeur N+1" C étant la valeur du temps de vol et N celle de la suite de nombres.

Posté par
ArgShX
re : Suite de Syracuse sur Algobox, Temps de vol en altitude. 11-12-13 à 15:52

Attends... ton algo tu lui donne quoi comme entrée ?
Normalement, tu entre un entier et l'algo calcule le temps de vol associé. C'est pas un algo énorme mais ça fait plus qu'une ligne. Est-ce que tu peux me copier tout l'algoritme que tu as écrit ?

Posté par
Angel71
Suite de Syracuse sur Algobox, Temps de vol en altitude.#msg4945 11-12-13 à 15:59

Variables
N est du type nombre
C est du type nombre
DEBUT ALGORITHME
Lire N
TANT QUE (N!=1) FAIRE
  DEBUT TANT QUE
SI (N%2==0)ALORS
DEBUT SI
N prend la valeur N/2
FIN SI
SINON
DEBUT SINON
N prend la valeur N*3+1
C prend la valeur N+1
FIN SINON
Afficher N
FIN TANT QUE
Afficher C

Posté par
ArgShX
re : Suite de Syracuse sur Algobox, Temps de vol en altitude. 11-12-13 à 16:09

Ah ok, alors c'est quasiment bon

Sauf que le temps de vol, c'est le temps que la suite met pour atteindre 1. Donc pour le déterminer il suffit de compter le nombre de passage dans la boucle, ce qui donnerait plutôt :


Variables
  N est du type nombre
  C est du type nombre
DEBUT ALGORITHME
  Lire N
  C prend la valeur 0
  TANT QUE (N!=1) FAIRE
  DEBUT TANT QUE
    SI (N%2==0)ALORS
    DEBUT SI
      N prend la valeur N/2
    FIN SI
    SINON
    DEBUT SINON
      N prend la valeur N*3+1
    FIN SINON
    C prend la valeur C+1
    Afficher N
  FIN TANT QUE
  Afficher C


Au début C vaut 0, puis on ajoute 1 à chaque passage dans la boucle. On est d'accord là dessus ?

Posté par
Angel71
Suite de Syracuse sur Algobox, Temps de vol en altitude.#msg4945 11-12-13 à 16:15

On est d'accord mais si on entre la donnée C prend la valeur de 0, on pourra toujours avoir le temps de vol parce que en fait sur un même algorithme on doit pouvoir trouver la suite, le temps de vol, le temps de vol en altitude et l'altitude maximale.

Posté par
ArgShX
re : Suite de Syracuse sur Algobox, Temps de vol en altitude. 11-12-13 à 16:29

Je ne vois pas bien le problème... On veut compter le nombre de termes de la suite avant d'arriver à 1, donc on part de 0, et on ajoute 1 à chaque nouveau terme calculé, c'est tout. Ça n'empêche pas de calculer tout ce qu'on veut. Par ailleurs ce que tu avais écrit était faux et ne calculait pas le temps de vol.

Maintenant, pour calculer le temps de vol en altitude : au lieu d'ajouter 1 à chaque passage dans la boucle, on ajoute 1 uniquement si N est plus grand que le premier terme de la suite. Il suffit donc d'ajouter un IF avant d'augmenter la valuer de C. Tu vois ce qu'il faut écrire ?

Posté par
Angel71
Suite de Syracuse sur Algobox, Temps de vol en altitude.#msg4945 11-12-13 à 16:35

Justement on arrive au problème. C'est que je voudrais exprimer, que la valeur H (temps de vol en altitude) est égale à N> à la première valeur mais je ne sais pas comment l'exprimer et où placer cette indication?

Posté par
ArgShX
re : Suite de Syracuse sur Algobox, Temps de vol en altitude. 11-12-13 à 16:47

Alors déjà :

Citation :
H est égale à N> à la première valeur


ça ne veut pas dire grand chose A la limite, on peut dire que H est égal au nombre de fois que N est supérieur à la première valeur. Donc, au début H vaut 0. Ensuite à chaque fin de boucle on regarde si N est supérieur à la première valeur. Si oui, alors on augmente H de 1, sinon on ne fait rien.

Au début de l'algo, avant la boucle, il faut donc écrire un truc du genre "P prend la valeur N" (P est la première valeur, on doit la stocker dans une variable). Et à la fin de la boucle on a :

SI (N>P)ALORS
DEBUT SI
  H prend la valeur H+1
FIN SI

Et onc on compte bien le nombre de fois que N (la valeur de la suite) est supérieure à P (la première valeur).

Posté par
Angel71
Suite de Syracuse sur Algobox, Temps de vol en altitude.#msg4945 11-12-13 à 16:54

Ah d'accord je comprends mieux. Mais par contre où est ce que l'on doit placer SI (N>P) ALORS
                                                                                DEBUT SI
                                                                                   etc...  ?

Posté par
ArgShX
re : Suite de Syracuse sur Algobox, Temps de vol en altitude. 11-12-13 à 17:01

A ton avis ? Surtout que je l'ai déjà indiqué dans mon post précédent.

Posté par
Angel71
Suite de Syracuse sur Algobox, Temps de vol en altitude.#msg4945 11-12-13 à 17:05

Oui désolé , il faut l'écrire à la fin de la boucle de l'algo, c'est ça?

Posté par
ArgShX
re : Suite de Syracuse sur Algobox, Temps de vol en altitude. 11-12-13 à 17:12

Yep c'est ça. Ecris tout l'algo si t'es pas sûr, que je vérifie.

Tant qu'on y est, tu parlais de calculer l'altitude max : tu vois comment faire ?

Posté par
Angel71
Suite de Syracuse sur Algobox, Temps de vol en altitude.#msg4945 11-12-13 à 17:19

Oui je veux bien:
  N est du type nombre
  C est du type nombre
  H est du type nombre
  P est du type nombre
DEBUT ALGORITHME
  Lire N
  C prend la valeur 0
  P prend la valeur N
TANT QUE (N!=1) FAIRE
  DEBUT TANT QUE
    SI (N%2==0)ALORS
    DEBUT SI
      N prend la valeur N/2
    FIN SI
    SINON
    DEBUT SINON
      N prend la valeur N*3+1
    FIN SINON
    C prend la valeur C+1
    Afficher N
  FIN TANT QUE
Si (N>P) ALORS
DEBUT SI
H prend la valeur H+1
FIN SI
Afficher C
Afficher H

Voila mon algo mais en fait quand je teste pour 14 (le prof nous a donné les reponses pr que l'on puisse tester) je ne tombes pas sur 8 comme il l'indique mais sur 0.

Posté par
ArgShX
re : Suite de Syracuse sur Algobox, Temps de vol en altitude. 11-12-13 à 17:31

Le but est de compter le nombre de fois que N est supérieur à P, donc il faut faire le test DANS la boucle, et pas après comme ce que tu as proposé. Donc il faut placer le IF... avant le FIN TANT QUE, sinon ce qu'il se passe c'est que tu fais le test une seule fois, tout à la fin. A ce moment N vaut 1 (c'est pour ça qu'on est sorti du TANT QUE), et donc H reste à 0. Pour résumer, la fin de ton programme doit ressembler à ça :

...
    FIN SINON
    C prend la valeur C+1
    SI (N>P) ALORS
    DEBUT SI
      H prend la valeur H+1
    FIN SI
    Afficher N
  FIN TANT QUE
Afficher C
Afficher H

Et là normalement ça marche

Posté par
Angel71
N est du type nombre C est du type nombre DEBUT ALGORITHME 11-12-13 à 17:37

Merci beaucoup,en effet ça marche. Heu par contre j'avoue qu'un coup de main pour l'altitude maximale est le bienvenue parce que je galère un peu

Posté par
ArgShX
re : Suite de Syracuse sur Algobox, Temps de vol en altitude. 11-12-13 à 17:53

Le principe pour calculer un maximum est assez simple : on regarde toute les valeurs une par une, et si on en voit une plus grande que celles qu'on a vu avant, alors elle devient le max.
Disons qu'on utilise la variable M pour le max. Au début on ne connaît que la prmière valeur de la suite, qui est celle qu'on a entrée, et donc M vaut N. Ensuite, à chaque passage dans la boucle, on va calculer un nouveau N. On compare ce nouveau N à M, et s'il est plus grand, alors M prend la valeur de N.
Donc il suffit de rajouter à la fin de la boucle (DANS la boucle ) un truc du type "si N>M alors M prend la valeur de N".

Ok, je viens de me rendre compte que c'est pas si clair que ça... Pourtant c'est simple ^^ Exécute l'algo à la main sur un exemple pour te rendre compte de ce qu'il se passe, ça peut aider.

Posté par
Angel71
Suite de Syracuse sur Algobox, Temps de vol en altitude. 11-12-13 à 18:06

D'accord donc si j'ai bien compris l'algo c'est ça:
N est du type nombre
  C est du type nombre
  H est du type nombre
  P est du type nombre
  M est du type nombre
DEBUT ALGORITHME
  Lire N
  C prend la valeur 0
  P prend la valeur N
  M prend la valeur N
TANT QUE (N!=1) FAIRE
  DEBUT TANT QUE
    SI (N%2==0)ALORS
    DEBUT SI
      N prend la valeur N/2
    FIN SI
    SINON
    DEBUT SINON
      N prend la valeur N*3+1
    C prend la valeur C+1
    FIN SINON
     SINON
   SI (N>P) ALORS
    DEBUIT SI
     H prend la valeur H+1
    FIN SI
   SI (N>M)
    DEBUT SI
    M prend la valeur N
    FIN SI
Afficher N
  FIN TANT QUE
Afficher C
Afficher H
Afficher M

Posté par
ArgShX
re : Suite de Syracuse sur Algobox, Temps de vol en altitude. 11-12-13 à 18:47

Ça m'a l'air tout bon. Vérifie quand même que ça donne les bons résultats quand tu lance l'algo, on sait jamais.
(Pour M c'est facile à vérifier vu que tu affiche aussi tous les termes de la suite)

Posté par
Angel71
Suite de Syracuse sur Algobox, Temps de vol en altitude. 11-12-13 à 18:50

Oui effectivement tout marche. Merci beaucoup pour votre aide!!!!:D:D



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 !