Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

suite de Syracuse

Posté par
oceeane
03-02-13 à 17:19

Bonjour tout le monde,

Dans mon algorithme de la suite de Syracuse ( voir image ), je dois rajouter une variable qui s'appelle ' nbre le plus haut ". Cette variable doit me dire lorsqu'on tape un chiffre par exemple 26 le nombre le plus haut de la suite ( jusqu'à 1 ). J'ai donc ajouté une nouvelle variable mais je ne sais pas du tout comment procéder pour qu'il me fasse ceci... Pouvez-vous m'expliquer s'il vous plaît ?

Bonne fin de journée
Océane

suite de Syracuse

Posté par
Glapion Moderateur
re : suite de Syracuse 03-02-13 à 17:28

Bonsoir, par exemple :
(Pour le copier/coller, il faut être en mode éditeur de texte dans algobox) :

VARIABLES
u EST_DU_TYPE NOMBRE
nbre EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE u
nbre PREND_LA_VALEUR 0
TANT_QUE (u != 1) FAIRE
DEBUT_TANT_QUE
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>nbre) ALORS
DEBUT_SI
nbre PREND_LA_VALEUR u
FIN_SI
FIN_TANT_QUE
AFFICHER nbre
FIN_ALGORITHME

Posté par
oceeane
re : suite de Syracuse 03-02-13 à 18:36

Ah oui merci beaucoup pour cet algorithme !
Par contre comment faire pour qu'il m'affiche toute la suite et à la fin le nombre le plus haut ? car là il n'affiche seulement le nombre le plus haut.. et quand je mets ' afficher u ' ça me met des nombres bizarres..

Posté par
oceeane
re : suite de Syracuse 03-02-13 à 18:39

en fait je voudrais qu'il m'affiche toute la suite jusqu'à 1 ...

Posté par
oceeane
re : suite de Syracuse 03-02-13 à 18:42

ah ça y est j'ai réussi ! merci beaucoup de votre aide

Posté par
Glapion Moderateur
re : suite de Syracuse 03-02-13 à 18:51

Oui alors prend celui-là :

VARIABLES
u EST_DU_TYPE NOMBRE
nbre EST_DU_TYPE NOMBRE
n EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE u
n PREND_LA_VALEUR 1
nbre PREND_LA_VALEUR 0
AFFICHER n
AFFICHER " -> "
AFFICHER* u
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>nbre) ALORS
DEBUT_SI
nbre PREND_LA_VALEUR u
FIN_SI
AFFICHER n
AFFICHER " -> "
AFFICHER* u
FIN_TANT_QUE
AFFICHER " le nombre le plus haut : "
AFFICHER* nbre
FIN_ALGORITHME

Posté par
oceeane
re : suite de Syracuse 03-02-13 à 18:53

Il est mieux que l'autre ? Quelle différence y a-t-il ?

Posté par
Glapion Moderateur
re : suite de Syracuse 03-02-13 à 18:54

Ben, il faut ce que tu as demandé, il affiche tous les termes de la suite ainsi que leur rang et le terme le plus haut à la fin.

Posté par
oceeane
re : suite de Syracuse 03-02-13 à 19:06

D'accord merci, mais avec l'autre j'avais réussi à tout afficher . Puis-je vous demander une question sur un autre algorithme qui n'a rien à voir ?

Posté par
Glapion Moderateur
re : suite de Syracuse 03-02-13 à 19:23

pose toujours.

Posté par
oceeane
re : suite de Syracuse 03-02-13 à 19:59

c'est gentil. Je devais faire un algorithme qui me demande deux nombres a et b. Si ils sont identiques il me dit qu'ils sont les mêmes mais si ils sont différents a prend la valeur de b et b prend la valeur de a... mais je n'arrive pas. a prend la valeur de b mais b ne prend pas la valeur de a. Je vous mets ce que j'ai fait

suite de Syracuse

Posté par
Glapion Moderateur
re : suite de Syracuse 03-02-13 à 20:36

il faut passer par une valeur intermédiaire c car si tu fais a=b puis b=a, à ce moment là a a déjà perdu la valeur qu'il avait.
je n'ai pas compris à quoi servait ton tantQue

VARIABLES
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
c EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE a
LIRE b
AFFICHER "Deux nombres :"
AFFICHER a
AFFICHER " et "
AFFICHER* b
SI (a==b) ALORS
DEBUT_SI
AFFICHER "Les deux nombres sont égaux"
FIN_SI
SINON
DEBUT_SINON
c PREND_LA_VALEUR a
a PREND_LA_VALEUR b
b PREND_LA_VALEUR c
AFFICHER "Les mêmes mais intervertis :"
AFFICHER a
AFFICHER " et "
AFFICHER* b
FIN_SINON
FIN_ALGORITHME

Posté par
oceeane
re : suite de Syracuse 03-02-13 à 21:13

Ah oui d'accord effectivement le mien ne pouvait pas marcher... cependant je ne comprends pas trop le passage :
c PREND_LA_VALEUR a
a PREND_LA_VALEUR b
b PREND_LA_VALEUR c

Pouvez-vous m'expliquer ?
désolée pour toutes ces questions ...

Posté par
Glapion Moderateur
re : suite de Syracuse 03-02-13 à 21:23

On stocke provisoirement a dans c
on affecte à a la valeur de b
on affecte à b l'ancienne valeur de a que l'on avait stockée dans c.

Au final on a échangé a et b.
Fait le fonctionner à la main, ou pas à pas dans algobox, tu verras bien les valeurs que prennent les variables.

Posté par
oceeane
re : suite de Syracuse 03-02-13 à 21:38

ah oui c'est pas mal le mode pas à pas, je n'y avais pas pensé.
merci beaucoup pour votre aide
Bonne soirée



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