[83] Décimal en Hexa
3 participants
Page 1 sur 1
[83] Décimal en Hexa
Bonjour,
histoire de dérouiller ma calculatrice voila un programme qui convertit du Décimal en Hexadecimal.
bien sûr ce programme doit exister des centaines de fois, mais bon, fallait bien recommencer par du quelque-chose de simple.
Aucune gestion des erreurs n'est incluse donc ça peut donner n'importe quoi en fonction de ce que l'on saisi
exemple convertir 56789 devient DDD5
Il y a peut-être plus simple, je suis preneur.
exemple convertir 56789 devient DDD5
Il y a peut-être plus simple, je suis preneur.
histoire de dérouiller ma calculatrice voila un programme qui convertit du Décimal en Hexadecimal.
bien sûr ce programme doit exister des centaines de fois, mais bon, fallait bien recommencer par du quelque-chose de simple.
Aucune gestion des erreurs n'est incluse donc ça peut donner n'importe quoi en fonction de ce que l'on saisi
exemple convertir 56789 devient DDD5
Il y a peut-être plus simple, je suis preneur.
- Code:
:ClrHome
:Prompt D
:"0123456789ABCDEF"→Str1
:" "→Str0
:16→G
:0→I
:While D≠0
:I+1→I
:D-iPart(D/G)G→Z
:iPart(D/G)→D
:sub(Str1,Z+1,1)+Str0→Str0
:End
:Disp Str0
:
exemple convertir 56789 devient DDD5
Il y a peut-être plus simple, je suis preneur.
jovasco- Argent 4
- Age : 68
Messages : 80
Date d'inscription : 01/12/2012
Points Forum : 6
Points Concours : 0
Langages :- - TI-Basic Z80
- - TI-80
- - TI-82 Stats.fr
- - TI-86
- - TI-89
Re: [83] Décimal en Hexa
- Spoiler:
- Tu ne crois pas si bien dire concernant la variété de programmes de ce domaine. Le meilleur est sur le site du zéro par mdr1 et les miens lui ressemblent avec des fonctionnalités supplémentaires mais moins d'optimisations.
Tu utilises déjà l'algorithme le plus rapide parmi les deux remarquables.
La façon de le coder peut alléger quand même.
En particulier le test D=/=0 qui peut s'écrire simplement D.
Enlever les parenthèses et guillemets fermants en fin de ligne et avant chaque sto.
Dans l'état actuel I n'est pas utilisé donc je conseille de l'enlever.
Je constate que ton programme supporte la valeur nulle et répond par un espace. Seuls les nombres décimaux doivent poser problème.
linkakro- Or 4
- Sexe :
Age : 30
Messages : 768
Date d'inscription : 01/07/2010
Etudes : dut geii (elec/info)
Points Forum : 51
Points Concours : 8
Langages :- - TI-Basic Z80
- - ASM TI-82 Stats / TI-83
- - ASM TI-83+ / TI-84+
- - TI-82 Stats.fr
- - TI-84 Pocket.fr
Re: [83] Décimal en Hexa
merci d'avoir pris le temps de regarder.
Oui la variable "i" est un oubli (sans doute d'une autre méthode que j'avais essayée)
je n'avais pas vu que si on rentrait 0 ça ne sortait rien... (quelle idée de taper 0 ... ) mais ça fait parti des tests qu'il faudrait faire
je remarque aussi que les décimaux et négatifs plantent mon programme
et les grand nombres qui passent en puissance de 10 ça doit être faux aussi.
j'ai tendance à laisser les parenthèses et les guillemets de fin car ça fait plus lisible et puis peut-être qu'un jour les nouveaux OS seront moins permissifs sur la syntaxe Mais c'est vrai au prix de l'octet et la taille de la RAM il vaut mieux économiser...
concernant l'autre algo remarquable, tu peux en dire un peu plus ?
Je n'e vois pas l'endroit de mon code : D=/=0 tu peux éclaircir ce point ?
merci en tous cas !
Oui la variable "i" est un oubli (sans doute d'une autre méthode que j'avais essayée)
je n'avais pas vu que si on rentrait 0 ça ne sortait rien... (quelle idée de taper 0 ... ) mais ça fait parti des tests qu'il faudrait faire
je remarque aussi que les décimaux et négatifs plantent mon programme
et les grand nombres qui passent en puissance de 10 ça doit être faux aussi.
j'ai tendance à laisser les parenthèses et les guillemets de fin car ça fait plus lisible et puis peut-être qu'un jour les nouveaux OS seront moins permissifs sur la syntaxe Mais c'est vrai au prix de l'octet et la taille de la RAM il vaut mieux économiser...
concernant l'autre algo remarquable, tu peux en dire un peu plus ?
Je n'e vois pas l'endroit de mon code : D=/=0 tu peux éclaircir ce point ?
merci en tous cas !
jovasco- Argent 4
- Age : 68
Messages : 80
Date d'inscription : 01/12/2012
Points Forum : 6
Points Concours : 0
Langages :- - TI-Basic Z80
- - TI-80
- - TI-82 Stats.fr
- - TI-86
- - TI-89
Re: [83] Décimal en Hexa
J'avais fait un traducteur en une petite dizaine de ligne en basic je le chercherais ce soir mais c'est effectivmenet un bon programme et qui est utile, il ne te reste plus qu'a faire la traduction hexa->decimal
nikitouzz- Platinum 1
- Sexe :
Age : 28
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :- - TI-Basic Z80
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - TI-Basic 68K
- - TI-Basic Nspire
- - TI-73
- - TI-76.fr
- - TI-82 Stats.fr
- - TI-83+
- - TI-84+
- - TI-92
- - TI-Nspire
- - TI-Nspire CX
Re: [83] Décimal en Hexa
ah oui While D≠0 peut s'écrire While D. pas évident de savoir ce que ça teste au premier coup d'oeillinkakro a écrit:[
En particulier le test D=/=0 qui peut s'écrire simplement D.
jovasco- Argent 4
- Age : 68
Messages : 80
Date d'inscription : 01/12/2012
Points Forum : 6
Points Concours : 0
Langages :- - TI-Basic Z80
- - TI-80
- - TI-82 Stats.fr
- - TI-86
- - TI-89
Re: [83] Décimal en Hexa
Les nombres décimaux et négatifs doivent planter le sub(). Les négatifs ne planteraient pas avec la fonction int à la place de iPart mais le résultat serait quand même faux. (voire boucle infinie, sur ce coup la j'ai du mal à prévoir)
Tandis que les nombres suppérieurs à 10^14 perdrent leurs derniers chiffres (s'il y en a des non nuls) après le 14ème.
En effet la calculatrice enmagasine 14 chiffres de mantisse (la mantisse est le nombre entre 0 et 1 associé à une puissance de 10 en notation scientifique).
Les entiers de 0 à 10^14 ne posent pas de problème.
L'autre algorithme que j'ai mentionné consiste à déterminer la plus grande puissance de 2 inférieure au nombre saisi puis à diviser le nombre par les puissances de 2 dans l'ordre décroissant en conservant les quotient et transmettant à la prochaine opération le reste.
Cette méthode est parfois performante de tête pour un humain, mais pas du tout pour un ordinateur.
Parfois je laisse les syntaxes de fin de ligne, par exemple quand une chaine de caractères se termine par des espaces. Si tu veux laisser des syntaxes, laisse les, c'est plus facile au radin de les enlever qu'au développeur de les ajoûter.
J'aime bien utiliser un Repeat pour que le programme supporte le 0 sans test ni initialisation de la chaine à "0".
Tandis que les nombres suppérieurs à 10^14 perdrent leurs derniers chiffres (s'il y en a des non nuls) après le 14ème.
En effet la calculatrice enmagasine 14 chiffres de mantisse (la mantisse est le nombre entre 0 et 1 associé à une puissance de 10 en notation scientifique).
Les entiers de 0 à 10^14 ne posent pas de problème.
L'autre algorithme que j'ai mentionné consiste à déterminer la plus grande puissance de 2 inférieure au nombre saisi puis à diviser le nombre par les puissances de 2 dans l'ordre décroissant en conservant les quotient et transmettant à la prochaine opération le reste.
Cette méthode est parfois performante de tête pour un humain, mais pas du tout pour un ordinateur.
Parfois je laisse les syntaxes de fin de ligne, par exemple quand une chaine de caractères se termine par des espaces. Si tu veux laisser des syntaxes, laisse les, c'est plus facile au radin de les enlever qu'au développeur de les ajoûter.
J'aime bien utiliser un Repeat pour que le programme supporte le 0 sans test ni initialisation de la chaine à "0".
linkakro- Or 4
- Sexe :
Age : 30
Messages : 768
Date d'inscription : 01/07/2010
Etudes : dut geii (elec/info)
Points Forum : 51
Points Concours : 8
Langages :- - TI-Basic Z80
- - ASM TI-82 Stats / TI-83
- - ASM TI-83+ / TI-84+
- - TI-82 Stats.fr
- - TI-84 Pocket.fr
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|