Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Conjecture de Syracuse Algorithme

Posté par
Pauline62
19-10-12 à 21:19

Bonsoir a tous !
J'ai eu un exercice d'algorithme mais je ne sais pas vraiment si ce que j'ai fait est correct donc est ce que vous pourriez me corriger ou me donner des conseils pour mieux présenter ou autre ? Merci d'avance !

Tout d'abord voici le sujet :

Si n est un entier naturel non nul, on le divise par 2 s'il est pair, sinon on le multiplie par 3 puis on lui ajoute 1. On répéte l'opération jusqu'a l'obtention du nombre 1.

1  VARIABLE
2    n EST DU TYPE NOMBRE
3  DEBUT ALGORITHME
4    LIRE n
5    TANT QUE (n!=1) FAIRE
6       DEBUT TANT QUE
7       SI (n%2==0) ALORS
8          DEBUT SI
9          n PREND LA VALEUR n/2
10         FIN SI
11         SINON
12             DEBUT SINON
13             n PREND LA VALEUR 3*n+1
14             FIN SINON
15       AFFICHER "n="
16       AFFICHER n
17       FIN TANT QUE
18 FIN ALGORITHME

Question posée:
~> Ecrire l'algorithme en langage naturel dont est issu ce programme.
~> Modifier l'algorithme pour calculer la durée de vol dans le programme

Réponse proposée :
~> Entrée : Saisir n
    Traitement : Afficher n
                 Tant que n1 faire
                   Si le nombre est pair, le diviser par 2
                   Si le nombre est impair, le multiplier par 3 puis ajouter 1
                   Fin si
    Sortie : Afficher n=

Suis je complétement a coté ou ai je bon ? Je ne comprends pas trés bien la question mais j'ai essayé de faire de mon mieux par contre pour l'autre question je ne sais pas :/ J'ai fait plusieurs recherches mais rien ma prof m'a dit que la durée de vol était le nombre d'étape du vol et que le vol était la suite obtenue aprés les calculs et ca je ne sais pas l'introduire dans l'algorithme ... Comment faire aidez moi s'il vous plait :/

Merci d'avance !

Posté par
pgeod
re : Conjecture de Syracuse Algorithme 19-10-12 à 21:31


Entrée : Saisir n non nul
Traitement :
    Tant que n est différent de 1 faire
        Si le nombre est pair, le diviser par 2
        Sinon le multiplier par 3 puis ajouter 1
    fin tant que
Sortie : Afficher la valeur de n

Posté par
fm_31
re : Conjecture de Syracuse Algorithme 19-10-12 à 21:34

Bonjour ,

la 1° partie est correcte . En sortie , c'est afficher n au lieu de afficher n= . Ou alors afficher "n = " , n .
Comme tu as mis un fin si , je mettrais aussi un fin tant que .

Pour la durée de vol , c'est effectivement le nombre de fois qu'on passe dans la boucle tant que ... fin tant que .
Il faut donc introduire une variable supplémentaire (p pour passage par exemple) , l'initialiser à 0 et afficher sa valeur à la fin .

Cordialement

Posté par
Pauline62
Re 19-10-12 à 21:37

Merci pour vos réponses ca m'aide beaucoup !
Et donc j'ai juste a rajouter les deux lignes ?
En fait je cherchais compliquer alors que c'est tout simple ^^

Posté par
pgeod
re : Conjecture de Syracuse Algorithme 19-10-12 à 21:39

Posté par
fm_31
re : Conjecture de Syracuse Algorithme 19-10-12 à 21:51

>>> Et donc j'ai juste a rajouter les deux lignes ?

3 lignes : initialisation , incrémentation dans la boucle , affichage final

Cordialement

Posté par
pgeod
re : Conjecture de Syracuse Algorithme 20-10-12 à 09:38


1  VARIABLE
2    n EST DU TYPE NOMBRE
...  i est du type nombre
3  DEBUT ALGORITHME
4    LIRE n
... i prend la valeur 0
5    TANT QUE (n!=1) FAIRE
.... i prend la valeur i + 1
6       DEBUT TANT QUE
7       SI (n%2==0) ALORS
8          DEBUT SI
9          n PREND LA VALEUR n/2
10         FIN SI
11         SINON
12             DEBUT SINON
13             n PREND LA VALEUR 3*n+1
14             FIN SINON
15       AFFICHER "n="
16       AFFICHER n
17       FIN TANT QUE
..... AFFICHER "durée de vol = "
..... AFFICHER i
18 FIN ALGORITHME

Posté par
fm_31
re : Conjecture de Syracuse Algorithme 20-10-12 à 10:22

Cela me parait correct  sauf la ligne  .... i prend la valeur i + 1   qui doit s'exécuter à chaque passage dans la boucle et qui doit donc être mise après la ligne 6 .

D'ailleurs moi , je ne met jamais   DEBUT TANT QUE   ou   DEBUT SI

Je trouve plus lisible de soigner l'indentation :

TANT QUE ...
   ...
   ...
FIN TANT QUE

SI ...
   ...
   ...
   ...
SINON SI  ...
   ...
   ...
   ...
SINON
   ...
   ...
FIN SI

Cordialement

Posté par
pgeod
re : Conjecture de Syracuse Algorithme 20-10-12 à 10:31

fm_31 a raison.
Compte de la syntaxe du TANT QUE utilisé ici,
le i prend la valeur i + 1  
doit trouver sa place entre le DEBUT TANT QUE et le FIN TANT QUE.

Posté par
Pauline62
Re 21-10-12 à 18:38

Merci beaucoup de votre aide !

Posté par
pgeod
re : Conjecture de Syracuse Algorithme 21-10-12 à 18:40



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 1707 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 !