Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

Suite de Syracuse

Posté par
-Nanousse-
28-04-14 à 13:26

Bonjour, j'aimerais savoir comment sélectionner algorithmiquement le nombre le plus grand d'une liste parce que j'ai un DM à rendre sur la suite de Syracuse.
Merci

Posté par
patrice rabiller
re : Suite de Syracuse 28-04-14 à 13:34

Bonjour

Tout simplement en parcourant tous les éléments de la liste et en considérant que, a priori, le premier de la liste est le plus grand.
Ensuite,chaque fois qu'un élément de la liste est plus grand que l'élément connu comme le plus grand jusqu'alors, il suffit de "rafraîchir" la valeur du plus grand.

en espérant avoir été clair

Posté par
-Nanousse-
re : Suite de Syracuse 28-04-14 à 13:37

Ok merci
J'ai compris

Posté par
-Nanousse-
re : Suite de Syracuse 28-04-14 à 18:04

J'ai réussi à créer l'algorithme que je voulais (il devait fournir l'altitude et le n pour lequel cette altitude étaie atteinte) mais je dois en créer un autre qui demande un entier N et qui affiche n (le temps de vol le plus long) pour un u0 le plus petit possible.
Et j'aimerais savoir comment mémoriser un nombre de listes N  

Posté par
weierstrass
re : Suite de Syracuse 28-04-14 à 20:11

sur quoi programmes tu?

Posté par
-Nanousse-
re : Suite de Syracuse 29-04-14 à 19:17

Je programme sur algobox mais j'ai finalement réussi à créer puis à rafraichir une unique liste mais j'ai un problème, assez compliqué à expliquer
Donc je voudrais savoir comment publier un algorithme sur le topic, je le copie colle juste ?

Posté par
patrice rabiller
re : Suite de Syracuse 30-04-14 à 06:29

Ta question "mais je dois en créer un autre qui demande un entier N et qui affiche n (le temps de vol le plus long) pour un u0 le plus petit possible" n'est pas très claire ... Je la comprends comme ça :

Début
   Demander un entier N // N est la longueur de vol attendue
   u0 reçoit la valeur 1  // on commence par la plus petite valeur potentielle de u0
   L reçoit la valeur 1  // c'est la longueur de la suite commençant par u0=1
   Tant que L < N    
      u0 reçoit la valeur u0+1   //valeur de départ de la prochaine suite
      L reçoit la valeur 1   //initialisation à 1 de la longueur de la prochaine suite
      u reçoit la valeur u0   //initialisation à u0 de la prochaine suite
      Tant que u est différent de 1   //la suite s'arrête lorsque le terme calculé vaut 1. Il s'agit de calculer sa longueur L
         si u est pair alors u reçoit la valeur u/2 sinon u reçoit la valeur 3u+1
         L reçoit la valeur L+1
      Fin tant que
   Fin Tant que
   Afficher "La première suite de Syracuse de longueur ", N , "commence par ", u0
Fin

J'ai bon ?

Posté par
Glapion Moderateur
re : Suite de Syracuse 02-05-14 à 18:34

Tiens si ça t'intéresse, j'avais programmé ça pour un topic :
(tu peux le copier/coller dans algobox en mode éditeur de texte, ou bien directement en ligne dans proglab )


VARIABLES
  u EST_DU_TYPE NOMBRE
  n EST_DU_TYPE NOMBRE
  k EST_DU_TYPE NOMBRE
  Max EST_DU_TYPE NOMBRE
  AMax EST_DU_TYPE NOMBRE
  NN EST_DU_TYPE NOMBRE
  AA EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
  Max PREND_LA_VALEUR 0
  AA PREND_LA_VALEUR 0
  NN PREND_LA_VALEUR 0
  POUR k ALLANT_DE 2 A 10000
    DEBUT_POUR
    u PREND_LA_VALEUR k
    n PREND_LA_VALEUR 0
    TANT_QUE (u != 1) FAIRE
      DEBUT_TANT_QUE
      n PREND_LA_VALEUR n+1
      SI (u%2==0) ALORS
        DEBUT_SI
        u PREND_LA_VALEUR u/2
        FIN_SI
        SINON
          DEBUT_SINON
          u PREND_LA_VALEUR 3*u+1
          FIN_SINON
      SI (u > AA) ALORS
        DEBUT_SI
        AA PREND_LA_VALEUR u
        AMax PREND_LA_VALEUR n
        FIN_SI
      FIN_TANT_QUE
    SI (n > Max) ALORS
      DEBUT_SI
      NN PREND_LA_VALEUR k
      Max PREND_LA_VALEUR n
      FIN_SI
    FIN_POUR
  AFFICHER "le nombre qui a le temps de vol le plus grand est "
  AFFICHER NN
  AFFICHER " ; le temps de vol est de : "
  AFFICHER* Max
  AFFICHER "le nombre qui a l'altitude la plus grande est : "
  AFFICHER AMax
  AFFICHER " ; et cette altitude est de : "
  AFFICHER AA
FIN_ALGORITHME

Posté par
Glapion Moderateur
re : Suite de Syracuse 02-05-14 à 19:16

ha j'ai une petite faute de syntaxe :


VARIABLES
  u EST_DU_TYPE NOMBRE
  n EST_DU_TYPE NOMBRE
  k EST_DU_TYPE NOMBRE
  Max EST_DU_TYPE NOMBRE
  AMax EST_DU_TYPE NOMBRE
  NN EST_DU_TYPE NOMBRE
  AA EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
  Max PREND_LA_VALEUR 0
  AA PREND_LA_VALEUR 0
  NN PREND_LA_VALEUR 0
  POUR k ALLANT_DE 2 A 10000
    DEBUT_POUR
    u PREND_LA_VALEUR k
    n PREND_LA_VALEUR 0
    TANT_QUE (u != 1) FAIRE
      DEBUT_TANT_QUE
      n PREND_LA_VALEUR n+1
      SI (u%2==0) ALORS
        DEBUT_SI
        u PREND_LA_VALEUR u/2
        FIN_SI
        SINON
          DEBUT_SINON
          u PREND_LA_VALEUR 3*u+1
          FIN_SINON
      SI (u > AA) ALORS
        DEBUT_SI
        AA PREND_LA_VALEUR u
        AMax PREND_LA_VALEUR k
        FIN_SI
      FIN_TANT_QUE
    SI (n > Max) ALORS
      DEBUT_SI
      NN PREND_LA_VALEUR k
      Max PREND_LA_VALEUR n
      FIN_SI
    FIN_POUR
  AFFICHER "le nombre qui a le temps de vol le plus grand est "
  AFFICHER NN
  AFFICHER " ; le temps de vol est de : "
  AFFICHER* Max
  AFFICHER "le nombre qui a l'altitude la plus grande est : "
  AFFICHER AMax
  AFFICHER " ; et cette altitude est de : "
  AFFICHER AA
FIN_ALGORITHME

Et ça affiche :
le nombre qui a le temps de vol le plus grand est 6171 ; le temps de vol est de : 261
le nombre qui a l'altitude la plus grande est : 9663 ; et cette altitude est de : 27114424



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

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 !