Algorithme décimal à binaire

Fermé
Morgalex Messages postés 3 Date d'inscription jeudi 16 juillet 2015 Statut Membre Dernière intervention 7 septembre 2016 - 7 sept. 2016 à 15:41
quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 - 10 sept. 2016 à 12:39
Bonjour,
Je suis en ISN et j'aimerai avoir cet algorithme dans ma calculatrice (TI-82):


Demander un entier N
L ← ' ' # la chaîne L est initialement vide
Tant que N>0 faire
q ← quotient de la division de N par 2
r ← reste de la division de N par 2
N ← q
L ← 'r'+L # on concatène la chaîne 'r' avec L à gauche
Fin tant que
Afficher L


Merci de vos réponses

1 réponse

quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 345
10 sept. 2016 à 12:39
Bonjour,
Tu ne peux pas faire cet algorithme sur ta calculatrice tout simplement car il est impossible de concaténer une variable et une chaine. Tu as donc 2 possibilités pour faire ce que tu veux faire. La première consiste tout simplement à remplacer la chaine par une variable :

Demander un entier N
L ← 0
I ← 0 # I est un compteur pour savoir où ajouter le chiffre suivant
Tant que N>0 faire
q ← quotient de la division de N par 2 (ou q ← Int (N/2))
r ← reste de la division de N par 2 (ou r ← N-2Q)
N ← q
L ← L+r*(10^I)
I ← I+1
Fin tant que
Afficher L

Le seul problème de cet algorithme c'est que si le résultat est trop grand la calculatrice va arrondir le résultat donc tu va perdre toutes les dernières décimales. La deuxième solution permet de régler ce problème et consiste à utiliser une liste :

Demander un entier N
Dim L ← 1 # Création de la liste L
I ← 0
Tant que N>0 faire
q ← quotient de la division de N par 2 (ou q ← Int (N/2))
r ← reste de la division de N par 2 (ou r ← N-2Q)
N ← q
I ← I+1
Dim L ← I # On redimensionne la liste avec I indices
L[I] ← r # On écrit r à l'indice I de la liste L, le premier indice de la liste est 1
Fin tant que

Ensuite il ne reste plus qu'à écrire les chiffres du résultat un par un sans oublier de les écrire à l'envers :

Pour J allant de 1 à I faire
Afficher L[I-J+1] à la colonne J de la ligne 1
Fin pour

En revanche je ne maitrise pas très bien le langage TI donc pour éviter de te donner une mauvaise solution je préfère te rediriger vers ce cours qui apprend très bien à l'utiliser : https://openclassrooms.com/courses/apprenez-a-programmer-en-ti-basic ou alors peut être que quelqu'un meilleur que moi pourra t'aider.
J’espère t'avoir aider
Bonne journée
0