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

Algorithme de Syracuse

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.



Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21709
Enregistré le: 11 Nov 2009, 21:53

Re: Algorithme de Syracuse

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

Re: Algorithme de Syracuse

par Julio » 26 Nov 2016, 21:19

Mes réponses ont été rajoutées en rouge !
Merci de vos aides !

Avatar de l’utilisateur
zygomatique
Habitué(e)
Messages: 6928
Enregistré le: 20 Mar 2014, 12:31

Re: Algorithme de Syracuse

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

Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21709
Enregistré le: 11 Nov 2009, 21:53

Re: Algorithme de Syracuse

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

 

Retourner vers ✎✎ Lycée

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 82 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite