[83] Décimal en Hexa

Voir le sujet précédent Voir le sujet suivant Aller en bas

[83] Décimal en Hexa

Message par jovasco le Lun 4 Fév - 21:17

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.

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
Argent 4

Age : 61
Messages : 80
Date d'inscription : 01/12/2012
Points Forum : 6
Points Concours : 0
Langages :
  • - TI-Basic Z80
Calculatrices :
  • - TI-80
  • - TI-82 Stats.fr
  • - TI-86
  • - TI-89

TI-82 Stats.fr


Revenir en haut Aller en bas

Re: [83] Décimal en Hexa

Message par linkakro le Lun 4 Fév - 23:36

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
Or 4

Sexe : Masculin
Age : 22
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+
Calculatrices :
  • - TI-82 Stats.fr
  • - TI-84 Pocket.fr

TI-84+ SE


Revenir en haut Aller en bas

Re: [83] Décimal en Hexa

Message par jovasco le Mar 5 Fév - 7:18

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 !

jovasco
Argent 4
Argent 4

Age : 61
Messages : 80
Date d'inscription : 01/12/2012
Points Forum : 6
Points Concours : 0
Langages :
  • - TI-Basic Z80
Calculatrices :
  • - TI-80
  • - TI-82 Stats.fr
  • - TI-86
  • - TI-89

TI-82 Stats.fr


Revenir en haut Aller en bas

Re: [83] Décimal en Hexa

Message par nikitouzz le Mar 5 Fév - 10:44

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

_________________
[Vous devez être inscrit et connecté pour voir cette image]
Invité née le 0 a aujord'huis 0 ans et a posté 11 messages... je suis derrière vous

2x2x2 : 2.18 secondes / 2x2x2 une main : 21.15 secondes / 2x2x2 yeux bandés : 47.59
3x3x3 : 5.97 secondes / 3x3x3 une main : 49.86 secondes
4x4x4 : 1.49 minutes / 4x4x4 une main : 6.50 minutes
5x5x5 : 4.10 minutes / 5x5x5 une main : 18.02 minutes
6x6x6 : 8.10 minutes
7x7x7 : 16.03 minutes
9x9x9 : 58.26 minutes

3x3x1 : 0.73secondes / 3x3x2 : 30.55secondes / 3x3x3 : 5.97secondes / 3x3x4 : 1.09minutes / 3x3x5 : 1.46minutes / 3x3x6 : 2.06minutes

megaminx : 5.59 minutes / pyraminx : 7.91 secondes / square-one : 1.07

nikitouzz
Platinum 1
Platinum 1

Sexe : Masculin
Age : 21
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
Calculatrices :
  • - TI-73
  • - TI-76.fr
  • - TI-82 Stats.fr
  • - TI-83+
  • - TI-84+
  • - TI-92
  • - TI-Nspire
  • - TI-Nspire CX

TI-84+ SE


Revenir en haut Aller en bas

Re: [83] Décimal en Hexa

Message par jovasco le Mar 5 Fév - 12:26

linkakro a écrit:[
En particulier le test D=/=0 qui peut s'écrire simplement D.
ah oui While D≠0 peut s'écrire While D. pas évident de savoir ce que ça teste au premier coup d'oeil

jovasco
Argent 4
Argent 4

Age : 61
Messages : 80
Date d'inscription : 01/12/2012
Points Forum : 6
Points Concours : 0
Langages :
  • - TI-Basic Z80
Calculatrices :
  • - TI-80
  • - TI-82 Stats.fr
  • - TI-86
  • - TI-89

TI-82 Stats.fr


Revenir en haut Aller en bas

Re: [83] Décimal en Hexa

Message par linkakro le Mer 6 Fév - 18:40

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".

linkakro
Or 4
Or 4

Sexe : Masculin
Age : 22
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+
Calculatrices :
  • - TI-82 Stats.fr
  • - TI-84 Pocket.fr

TI-84+ SE


Revenir en haut Aller en bas

Re: [83] Décimal en Hexa

Message par Contenu sponsorisé Aujourd'hui à 18:14


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum