Inscription / Connexion Nouveau Sujet
Niveau terminale
Partager :

Algorithme base 10 vers base b

Posté par
albator1512
28-09-11 à 22:28

Bonsoir,
je dois écrire un algorithme permettant de passer un nombre N de la base 10 vers une autre base quelconque b. J'arrive très bien à changer de base à la main, mais je n'arrive pas à écrire cet algorithme.
merci à ceux qui m'aideront.

Posté par
pythamede
re : Algorithme base 10 vers base b 29-09-11 à 12:16

Décris ta procédure manuelle avec des mots simples, y compris avec le critère qui va te faire arréter la procédure (en fait je ne sais pas comment tu fais manuellement car il y a deux méthodes a priori : de la droite vers la gauche ou de la gauche vers la droite). Après, ce sera un jeu d'enfant que de décrire l'algorithme en question.

Si tu veux de l'aide, fais cela sur ta réponse et je verrai ce que je peux faire.

Posté par
albator1512
re : Algorithme base 10 vers base b 29-09-11 à 12:30

Merci de répondre
Voilà l'énoncé tel qu'il m'est donné :
Écrire un algorithme pour obtenir l'écriture en base b d'un entier naturel donné en base 10
*l'utilisateur pourra saisir le nombre N et la base b
* la machine affichera les chiffres qui constituent l'écriture du nombre N en base b

Posté par
pythamede
re : Algorithme base 10 vers base b 29-09-11 à 13:41

Ce n'est pas ce que j'ai demandé !!!

Citation :
J'arrive très bien à changer de base à la main
, dis-tu ! Eh bien je te demande Comment fais-tu, à la main ?

Si tu commences par la droite, par exemple, tu pourrais dire :

Je prends le nombre N donné et je cherche le reste de la division de N par b ; j'écris ce reste sur une feuille de papier.

Puis le prends le quotient entier obtenu dans cette même division et je remplace N par ce quotient.

Ensuite, je recommence avec la nouvelle valeur de N : je prends le reste de la division de N par b ; j'écris ce reste à gauche du premier chiffre.

Et ainsi de suite jusqu'à ce que N=0

Si au contraire tu commences par la gauche, tu pourrais dire :

je cherche la plus grande puissance de b qui soit inférieure ou égale à N. Je divise N par cette puissance et j'écris ce premier résultat sur un papier.

etc...

DIS MOI COMMENT TU FAIS A LA MAIN !

Posté par
albator1512
re : Algorithme base 10 vers base b 29-09-11 à 14:59

désolé je savais pas que ça changeait l'algorithme de prendre l'une ou l'autre =S
Je prend la puissance la plus grande sans dépasser N
je multiplie par le plus grand chiffre possible sans dépasser N, ce chiffre constituant le premier de l'autre base
comme ça avec b la base
a1 x b(puissance p) = premier nombre a1
a2 x b(puissance p-1)=second nombre
et le nombre en base b est a1a2...

Posté par
pythamede
re : Algorithme base 10 vers base b 29-09-11 à 15:50

Bon !

La variable P sera la puissance de B. On part de P=1 et on fait :

Tant que P<N faire P <-- P * B

P est alors la première puissance de B strictement supérieure à N

Faire P <-- P / B

P devient la plus grande puissance de B inférieure ou égale à N

On va mettre le résultat dans R. On part de R=0

Le premier chiffre sera C=N/B (division entière)

A chaque étape on va placer le nouveau chiffre à droite du nombre déjà partiellement construit. Cela revient à multiplier R par 10 et à ajouter le nouveau chiffre.

Donc : r<-- r*10+C

On remplace alors N par N-C*B

Et on divise P par B pour avoir la puissance précédente de B et on recommence.

Quand s'arrêter ? Par exemple, lorsque P=1.

Finalement ça donne :

P=1
Tant que P<N faire P <-- P * B
P=P/B
R=0
Faire
{
C=N/P
R=R*10+C
P=P/B
}
...tant que P>0
Afficher R

Lorsque la dernière division est faite avec P=1, le fait de calculer P<--P/B va mettre 0 dans P et ce sera le signal d'arrêt.

Posté par
pythamede
re : Algorithme base 10 vers base b 29-09-11 à 15:53

Cela suppose évidemment que B<10.

Pour B>10 il faut consacrer deux chiffres de R pour chaque résultat. On écrira alors R<-- R*100+C à la place de R<-- R*10+C

L'algorithme se décrit quasiment en langage naturel. En fonction du langage utilisé, il faut bien sûr traduire ce langage naturel en langage compréhensible par la machine utilisée.

Posté par
albator1512
re : Algorithme base 10 vers base b 29-09-11 à 17:18

Quand tu dis
le premier chiffre est C=N/B (division entière)
tu veut parler du reste?

Posté par
albator1512
re : Algorithme base 10 vers base b 29-09-11 à 18:19

J'ai regardé l'autre méthode que tu as donnée et je la trouve beaucoup plus simple le seule problème consiste à afficher les nombres dans l'ordre. désolé de changer  de méthode :-{

Posté par
pythamede
re : Algorithme base 10 vers base b 29-09-11 à 19:03

Citation :
tu veut parler du reste?


Non, du quotient entier !

Citation :
J'ai regardé l'autre méthode que tu as donnée et je la trouve beaucoup plus simple le seule problème consiste à afficher les nombres dans l'ordre


Ben oui ! C'est pour cela que ce n'est pas la plus simple !

Comment feras-tu pour ajouter un chiffre à gauche des premiers chiffres déjà écrits si tu trouves les chiffres de droite à gauche ?

Réfléchis un peu à la question !

Posté par
albator1512
re : Algorithme base 10 vers base b 29-09-11 à 19:12

J'ai trouvé il suffit de créer une nouvelle variable (moi j'ai appelée C) à laquelle on affecte 1
et la boucle est :
R prend la valeur du reste
N prend la valeur du résultat de la division entière
N' prend la valeur R*C+N'
C prend la valeur C * 10

merci beaucoup

Posté par
pythamede
re : Algorithme base 10 vers base b 29-09-11 à 19:34

Bravo ! Tu as compris !



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