1

Bonjour,

Je souhaite créer un programme capable de me convertir n'importe quel nombre d'une certaine base à une autre (par ex, 1000 en base 12 donne 1728 en base 10).

J'ai écrit cela :
Input "base 1 ?",Q
Input "nombre ?",N
Input "base 2 ?",P
0 -> A
0 -> R
10 -> B
N -> M
While B >= 10
A+1 -> A
N/(Q^A) -> B
End
While A >= 0
iPart(M/(P^A) -> S
S*Q^A+R -> R
M-(P^A*S) -> S
A-1 -> A
End R


Il m'es cependant apparu que ce programme ne pouvait être efficace à 100% que pour les bases inférieures ou égales à 10 puisque la calculette n'utilise que 10 chiffres.

L'un de vous saurait-il comment faire pour que la machine prenne en compte autant de chiffres supplémentaires que nécessaire ? (par ex en base 12, les chiffres seraient 0 1 2 3 4 5 6 7 8 9 A B)
Ainsi, lorsque je transforme un 11 de base 10 vers la base 12, j'obtiendrais B et non 11.

En espérant être compréhensible,

--
Whidou

2

Il faut stocker tous tes caracteres dans une chaine (Str1), puis les recuperer ensuite un a un avec la fonction 'Sub'
( 'Sub(Str1, n° du caractere a récupérer, 1)' ). Tu affiches alors a la suite ces caractères récupérés.
<-- et à votre gauche une superbe peinture pointilliste du XVIe siècle #sisi# représentant - vous l'aurez deviné - une banane ...
http://www.ti83plus.online.fr/home.php...

3

Merci, je vais essayer.

4

Attention; pour ça, il faut que le résultat soit sous forme de chaîne!
Tu ne peux pas entrer des lettres dans une variable numérique; il faut donc rajouter B, C, D ou autre à la fin de la chaine qui va jouer le rôle pour toi de réponse (j'ai pas trop regardé ton algorythme, mais je crois que c'est dans R que tu mets la réponse)...
En gros, il va falloir que tu crée une chaîne (ex: Str1) et que tu y ajoutes les chiffres et lettres d'une autre chaîne (Str2) en fn de tes besoins.
==> La syntaxe: Str1 + sub(Str1, x, 1) -> Str1
Où x est ton chiffre, et Str2 contient: 123456789ABCDEFG...
Par contre, t'es limité au nombre de caractères différents que tu mets dans Str2.

5

Pas forcement besoin d'une autre chaine si on affiche directement le résultat a l'envers (par contre ca suppose qu'on connaisse la longueur du résultat en question puisqu'on commence par afficher le dernier caractere du résultat puis qu'on remonte).
<-- et à votre gauche une superbe peinture pointilliste du XVIe siècle #sisi# représentant - vous l'aurez deviné - une banane ...
http://www.ti83plus.online.fr/home.php...

6

Oui mais dans ce cas, le résultat n'est pas stocké, ou alors dans une liste; et si le nombre est plus grand que la largeur de l'écran, ça devient chiant à programmer.
Qui plus est, il faudrait aussi que l'entrée se fasse dans une chaîne pour pouvoir rentrer des lettres dedans.

7

Certes, si on en veut pas de probleme de ce coté, il est préférable de faire :
sub(Str2, x, 1) + Str1 -> Str1 (puisque l'algo de changement de base donne les caracteres du dernier au premier),
puis d'afficher avec la fonction : 'Pause Str1' qui permet de faire défiler la chaine avec les touches gauche-droite aussi longue soit elle.
<-- et à votre gauche une superbe peinture pointilliste du XVIe siècle #sisi# représentant - vous l'aurez deviné - une banane ...
http://www.ti83plus.online.fr/home.php...

8

Ouais, je crois que c'est le mieux à faire...
Bon, Whidou, si t'as encore besoin d'aide, fais le savoir...