Autorisation : Membre
Nb de messages : 3
Inscrit le : Sam 27 Mar 2010, 22:30
Posté le : Lun 29 Mar 2010, 17:06
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
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Lun 29 Mar 2010, 19:44
Bravo. J'aime bien ton utilisation des codetouches.
ps: décidément les conversions de bases sont indémodables
---------------------- 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)
Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
Posté le : Sam 10 Avr 2010, 13:46
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 ^^
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)
Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
Posté le : Mar 20 Avr 2010, 18:55
Pas mal ^^
pas mal du tout même
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
Autorisation : Membre
Nb de messages : 26
Inscrit le : Mar 13 Avr 2010, 12:34
Posté le : Jeu 22 Avr 2010, 10:54
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)
Autorisation : Membre
Nb de messages : 26
Inscrit le : Mar 13 Avr 2010, 12:34
Posté le : Dim 25 Avr 2010, 21:19
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)