Poster un nouveau sujet Poster une réponse
convertisseur Hex-dec-bin
Auteur Message
jeremie 19



Autorisation : Membre
Nb de messages : 3
Inscrit le : Sam 27 Mar 2010, 22:30
Posté le : Lun 29 Mar 2010, 17:06   Citer 

Salut voici mon programme mais avant tout pour la base d’entrer hexadécimale j’ai du utiliser le code touche donc pour taper les chiffres 0 1 2 3 4 5 6 7 8 9 c’est les touches normale mais pour taper A B C D E F il faut appuyer sur les touches qui correspondent au lettre en orange. Pour effacer un chiffre il faut appuyer sur suppr et pour tout supprimer appuyer sur annul.

à = teta
L1 = liste 1


Code

:EffEcr
:32->dim(L1
:Remplir(0,L1
:Lbl M
:0->E:0->D:0->H:1->à:1->Z:16->I:16->J:1->L:6->T
:Menu("BASE D ENTRER","BINAIRE",1,"DECIMAL",2,"HEXADECIMALE",3
:Lbl 1
:1->C
:Disp "BASE BINAIRE :"
:Imput "ENTRER UN NOMBRE  ",A             ("aprés NOMBRE il faut mettre 2 espaces")
:partEnt(A->A
:Output(3,1,"                                "     ("32 espaces")
:Output(3,1,A
:Lbl A
:partDéc(A/10)->B
:B*10->B
:If B>1 ou B<0:Goto 1
:B->L1(C
:C+1->C
:If C>=34:Goto 1
:partEnt(A/10)->A
:If A=0:Goto B
:If A!=0:Goto A
:Lbl B
:(L1(à)*2^D)+E->E
:D+1->D:à+1->à
:If à=C:Goto C
:If à!=C:Goto B
:Lbl C
:Output(5,1,"DECIMAL :
:Output(6,1,E
:Output(7,1"HEXADCIMAL :
:Lbl D
:partEnt(E/16)->G
:E-16*G->H
:G->E
:If H<10:Output(8,I,H
:If H=10:Output(8,I,"A
:If H=11:Output(8,I,"B
:If H=12:Output(8,I,"C
:If H=13:Output(8,I,"D
:If H=14:Output(8,I,"E
:If H=15:Output(8,I,"F
:I-1->I
:If E=0:Them
:Pause
:Goto M
:Else
:Goto D
:Lbl 2
:EffEcr
:Disp "BASE DECIMAL :"
:Imput "ENTRER UN NOMBRE ",A
:partEnt(A->A
:A->Z
:Output(3,1,"                                "       ("32 espaces")
:Output(3,1,A
:Output(4,1,"BINAIRE :
:Lbl E
:partEnt(A/2)->B
:A-2*B->C
:B->A
:Output(T,J,C
:J-1->J
:If J=0:Them
:16->J:T-1->T
:End
:If A=0:Goto F
:If A!=0:Goto E
:End
:Lbl F
:Z->E
:Output(7,1,"HEXADECIMAL :
:Goto D
:Lbl3
:EffEcr
:Disp "BASE HEXADECIMAL"
:Disp "ENTRER UN NOMBRE "
:1->I:1->E
:While I=1
:If L=16:Goto J
:codeTouche->A
:If A=102:Them
:Output(3,L,"0
:L+1->L:E+1->E:0->L1(E
:End
:If A=102:Them
:Output(3,L,"0
:L+1->L:E+1->E:0->L1(E
:End
:If A=92:Them
:Output(3,L,"1
:L+1->L:E+1->E:1->L1(E
:End
:If A=93:Them
:Output(3,L,"2
:L+1->L:E+1->E:2->L1(E
:End
:If A=94:Them
:Output(3,L,"3
:L+1->L:E+1->E:3->L1(E
:End
:If A=82:Them
:Output(3,L,"4
:L+1->L:E+1->E:4->L1(E
:End
:If A=83:Them
:Output(3,L,"5
:L+1->L:E+1->E:5->L1(E
:End
:If A=84:Them
:Output(3,L,"6
:L+1->L:E+1->E:6->L1(E
:End
:If A=72:Them
:Output(3,L,"7
:L+1->L:E+1->E:7->L1(E
:End
:If A=73:Them
:Output(3,L,"8
:L+1->L:E+1->E:8->L1(E
:End
:If A=74:Them
:Output(3,L,"9
:L+1->L:E+1->E:9->L1(E
:End
:If A=41:Them
:Output(3,L,"A
:L+1->L:E+1->E:10->L1(E
:End
:If A=42:Them
:Output(3,L,"B
:L+1->L:E+1->E:11->L1(E
:End
:If A=43:Them
:Output(3,L,"C
:L+1->L:E+1->E:12->L1(E
:End
:If A=51:Them
:Output(3,L,"D
:L+1->L:E+1->E:13->L1(E
:End
:If A=52:Them
:Output(3,L,"E
:L+1->L:E+1->E:14->L1(E
:End
:If A=53:Them
:Output(3,L,"F
:L+1->L:E+1->E:15->L1(E
:End
:If A=45 et L!=1:Them
:Output(3,1,"                "       ("16 espaces")
:Remplir(0,L1
:1->L:1->E
:End
:If A=23 et L!=1:Them
:Output(3,L-1," "
:L-1->L:E-1->E
:0->L1(E
:End
:If A=105 et L!=1:0->I
:End
:0->D:0->Y:E-1->E
:Lbl G
:(L1(E)*16^D)+Y->Y
:E-1->E:D+1->D
:If E=0:Goto H
:If E!=0:Goto G
:Lbl H
:Output(4,1,"DECIMAL :
:Output(5,1,Y
:Output(BINAIRE :
:Lbl I
:parEnt(Y/2)->M
:Y-2*M->L
:M->Y
:Output(T+2,J,L
:J-1->J
:If J=0:Them
:16->J:T-1->T
:End
:If Y=0:Them
:Pause
:Goto M
:Else
:Goto I



 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Lun 29 Mar 2010, 19:44   Citer 

Bravo. J'aime bien ton utilisation des codetouches.

ps: décidément les conversions de bases sont indémodables laugh.gif

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
jeremie 19



Autorisation : Membre
Nb de messages : 3
Inscrit le : Sam 27 Mar 2010, 22:30
Posté le : Lun 29 Mar 2010, 20:09   Citer 

Merci

 Adresse email Haut de page Bas de page 
 
jeremie 19



Autorisation : Membre
Nb de messages : 3
Inscrit le : Sam 27 Mar 2010, 22:30
Posté le : Mar 06 Avr 2010, 17:35   Citer 

est ce que quelqu'un la testé ??

 Adresse email Haut de page Bas de page 
 
-Coco-



Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
Posté le : Sam 10 Avr 2010, 13:46   Citer 

j'ai fait aussi un convertisseur de bases très complet, qui fait hexa, binaire, décimal dans tous les sens, et même en base 3 ou 36 si l'on veut ^^
j'utilise des chaînes, et il prend environ 500 octets.

Pour jouer a faire de la concurrence déloyale je vais le poster tiens ^^

 Adresse email Haut de page Bas de page 
 
-Coco-



Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
Posté le : Dim 11 Avr 2010, 11:15   Citer 

Voilà, le presque même en plus court...

C'est pour 82Stats.FR, Stat minimum car ça utilise des chaînes...


Code

:EffEcr
:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" --> Chaîne1
:Lbl MP
:Menu("CONVERTION:" , "DEC -> AUTRE" , 1 , "AUTRE -> DEC" , 2          //les -> ne sont pas des sto> mais bien un moins et un supérieur
:Lbl 1
:Input "NOMBRE? ",X
:X-->P
:Lbl A1
:Disp "A CONVERTIR EN"
:Input "BASE? ",B
:If B<2 ou B>36:Then
:EffEcr:Goto A1:End
:1-->¤                   //¤ = théta = Alpha + 3
:EffListe Liste1
:While X [pas égal à] 0
:X/B-->Z
:partEnt(Z)-->X
:arrondi(parDéc(Z)*B , 0) --> Liste1(¤
:¤+1-->¤
:End
:dim(Liste1 --> ¤
:1-->V
:6-->W
:For(A , ¤ , 1 , (-)1
:Output(W , V , sous-Chaîne(Chaîne1 , Liste1(A)+1 , 1            //sous-Chaîne se trouve dans le catalogue ...
:V+1-->V
:If V=17:Then
:1-->V
:W+1-->W
:End
:End
:Goto DD
:Lbl EF
:EffVar Chaîne1
:EffVar Chaîne2
:EffVar Liste1
:Stop
:Lbl 2
:EffEcr
:Input "BASE? ",B
:If B<2 ou B>36:Goto 2
:Input "NBR:",Chaîne2
:Chaîne2 + "-" --> Chaîne2
:1-->N : 1-->H : 1->D : (-)1-->E : 0-->P
:While sous-Chaîne(Chaîne2, D , 1) [pas égal à] "-"           //pour avoir la dimension de la chaîne...
:D+1-->D
:End
:D-1 -->D
:For(A , D , 1 , (-)1
:For(¤ , 1 , B
:If sous-Chaîne(Chaîne1, ¤, 1) = sous-Chaîne(Chaîne2, A, 1
:Then
:E+1-->E
:Disp ¤-1
:P+((¤-1)*B^E) --> P
:End
:End
:End
:Disp "" , "" , "DONNE:" , P
:Lbl DD
:Pause
:Menu("RECONVERTIR?" , "OUI" , AA , "NON" , EF , "MENU PRINCIPAL" , MP
:Lbl AA
:EffEcr
:P-->X
:Disp P
:Goto A1




Voilà...
Les --> sont des sto>

Pour faire par exemple de base 16 à base 2, il faut d'abord convertir en décimal puis reconvertir en base 2

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Link
Invité
Posté le : Mar 13 Avr 2010, 12:43   Citer 

jai mieux:
je vous met que celui pour byte/dec mais je l'ai fait pour toutes conversions:

4095[sto]S
11[sto]E
Input"X=",X
Lbl C
10^E[sto]F
If X[sup ou égal]F
Then
X-F[sto]X
Else
S-2^E[sto]S
End
E-1[sto]E
While E[sup ou égal]0
Goto C
End
Disp (S)


alors? minied.gif

  Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
-Coco-



Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
Posté le : Mar 20 Avr 2010, 18:55   Citer 

Pas mal ^^

pas mal du tout même winkle.gif

mais moi mon programme tel que tu le vois marche pour toutes les bases, et ce n'est donc pas un programme pour le binaire, un pour l'hexa, etc...
base x -> base 10
base 10 -> base x

x allant de 2 a 36 ^^

 Adresse email Haut de page Bas de page 
 
Link



Autorisation : Membre
Nb de messages : 26
Inscrit le : Mar 13 Avr 2010, 12:34
Posté le : Jeu 22 Avr 2010, 10:54   Citer 

oui, c'est vrai. Le mien est TRES rudimentaire, et comme j'ai besoin de place sur ma calculatrice... Cela n'en fait pas un "meilleur" programme ^^ .
mais j'ai compilé mes 4 programmes dans un seul (avec un menu), et ça fonctionne très bien! (même si depuis le triste "reset" impromptue de ma calculatrice, je n'arrive plus a refaire dec -> hex)

 Adresse email Haut de page Bas de page 
 
-Coco-



Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
Posté le : Sam 24 Avr 2010, 23:24   Citer 

tu fais des divisions euclidiennes par 16...
enfin

Input "NOMBRE? ",X
1-->C
While X=/=0
X/16-->A
PartEnt(A-->X
PartDec(A)*16-->Liste1(C
C+1-->C
End
"0123456789ABCDEF"-->Chaîne1
1-->W
For(A,C-1,1,-1
Output(5,W,sous-Chaîne(Chaîne1,Liste1(A)-1,1
End
EffVar Chaîne1

 Adresse email Haut de page Bas de page 
 
Link



Autorisation : Membre
Nb de messages : 26
Inscrit le : Mar 13 Avr 2010, 12:34
Posté le : Dim 25 Avr 2010, 21:19   Citer 

D'accord, mais il faut que je fasse varier l'affichage des caractères avec A, B, C, D, E et F.
Avant j'avais fait un truc du genre:

Input X
Demande si X est strictement supérieur a 15
Si oui, boucle à la puissance de 1 (quand boucle fini, passe à la puissance de 0, puis suis le parcours de "Si non")
Si non, boucle a la puissance de 0 (quand boucle fini, va a l'affichage des valeurs, donc avec les modifs et les passages en lettres)

et sa rendez bien pour pas lourd du tout!!!!

 Adresse email Haut de page Bas de page 
 
-Coco-



Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
Posté le : Mar 27 Avr 2010, 18:23   Citer 

Houla OO bon je te laisse faire bon courage minied.gif

 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 6 requêtes