Algorithme de Syracuse
Réponses à toutes vos questions de la 2nde à la Terminale toutes séries
-
Julio
- Membre Naturel
- Messages: 54
- Enregistré le: 11 Oct 2016, 19:31
-
par Julio » 26 Nov 2016, 20:41
Bonjour tous le monde, j'ai plusieurs code d'algorithme à faire sur Alogobox j'ai parfaitement réussi, sauf que le dernier portant sur Syracuse me porte problème....
Voici le code donné : avec mes réponses en rouge.
1 Variables
2 N est du type nombre
3 M est du type nombre
4 Compteur est du type nombre
5 Début algorithme
6_N Prend la valeur 0
7 Lire N
8 Tant que N=1 faire
9 Début tant que
10 M prend la valeur floor ( N/2)
11 Si (N==M*2) alors
12 Début si
13 N prend la valeur N/2
14 Fin si
15 Sinon
16 Début sinon
17 N prend la valeur 3*N+1
18 Fin sinon
19 Afficher N
20 Compteur prend la valeur Compteur +1
21 Fin tant que
22 Afficher Nombre de boucles
23 Afficher compteur
24 Fin algorithme.
Et voici le résultat donné pour boucher les trous :
Algorithme lancé :
Enter N : 6
3
10
5
16
84
2
1
Nombre de boucles 8
Algorithme terminé.
J'ai essayé de remplacer les trous avec la logique de Syracuse mais je ne trouve jamais les bons résultats, merci d'avance de m'éclaircir dessus !
Modifié en dernier par
Julio le 26 Nov 2016, 21:19, modifié 1 fois.
-
Ben314
- Le Ben
- Messages: 21709
- Enregistré le: 11 Nov 2009, 21:53
-
par Ben314 » 26 Nov 2016, 21:12
Salut,
Précise déjà ce que tu as mis dans les trou et qui ne marche pas, histoire que l'on "t'aiguille" dans la bonne direction sans te donner directement la solution.
(Edite par exemple ton message en mettant des trucs en rouge dans les trous)
Sinon, ce qui ne "mange pas de pain", c'est éventuellement de te donner l'algo en Français :
On part d'un entier N quelconque.
- S'il est pair on le divise par 2.
- S'il est impair, on le multiplie par 3 puis on ajoute 1.
Et on recommence jusqu'à ce que l'on obtienne le nombre 1 (et le programme doit aussi compter combien de temps ça a mis pour obtenir 1)
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius
-
Julio
- Membre Naturel
- Messages: 54
- Enregistré le: 11 Oct 2016, 19:31
-
par Julio » 26 Nov 2016, 21:19
Mes réponses ont été rajoutées en rouge !
Merci de vos aides !
-
zygomatique
- Habitué(e)
- Messages: 6928
- Enregistré le: 20 Mar 2014, 12:31
-
par zygomatique » 26 Nov 2016, 21:55
salut
à quoi sert-il de mettre 0 dans N si c'est pour lire ensuite une valeur à mettre dans N ?
Ce qui est affirmé sans preuve peut être nié sans preuve. EUCLIDE
-
Ben314
- Le Ben
- Messages: 21709
- Enregistré le: 11 Nov 2009, 21:53
-
par Ben314 » 26 Nov 2016, 21:56
C'est quasi bon et les erreurs ne sont pas "archi grave" (on a quand même l'impression que tu comprend le truc).
6 : N prend la valeur 0 ne sert à rien vu que la ligne juste en dessous tu demande à l'utilisateur de donner la valeur de N (ce qui va effacer ce que tu as mis dedans précédemment).
C'est la variable compteur (qui va compter le nombre de boucle) qu'il faut mettre à zéro
8 : Tant que N=1 n'est pas bon : il faut s'arrêter de faire la boucle lorsque N=1 donc la boucle doit continuer tant que N est différent de 1 c'est à dire (sous algobox) tant que N!=1
(dans certains langage, on peut faire des boucles avec une instruction "jusqu'à ce que ..." et dans ce cas là, il faudrait effectivement mettre "jusqu'à ce que N=1")
13 : N prend la valeur N/2 c'est tout bon et on pouvait aussi mettre N prend la valeur de M
Tout le reste marche.
EDIT : désolé zygo, j'ai pas vu ton message...
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 82 invités